I used the code given at the end to untar a tar.gz file. It works fine for few files. But for some files it gives FileNotFoundException. Can someone please suggest what is wrong with the code given below?
Thanks in advance.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import org.apache.tools.tar.TarEntry;
import org.apache.tools.tar.TarInputStream;
public class untarFiles
{
public static void main(
String args[]) {
try {
untar("c:/Files/AnyFile.tar.gz",new File("c:/Files/"));
}
catch(Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
private static void untar(String tarFileName, File dest) throws IOException {
//assuming the file you pass in is not a dir
dest.mkdir();
//create tar input stream from a .tar.gz file
TarInputStream tin = new TarInputStream( new GZIPInputStream
( new FileInputStream(new File(tarFileName))));
//get the first entry in the archive
TarEntry tarEntry = tin.getNextEntry();
while (tarEntry != null){//create a file with the same name as the tarEntry
File destPath = new File(dest.toString() + File.separatorChar + tarEntry.getName());
if(tarEntry.isDirectory()){
destPath.mkdir();
} else {
FileOutputStream fout = new FileOutputStream(destPath);
tin.copyEntryContents(fout);
fout.close();
}
tarEntry = tin.getNextEntry();
}
tin.close();
}
}