我正在使用jtar-1.1
尝试从tar文件中提取文件,我使用以下代码尝试提取文件
String tarFile = "c:/test/test.tar";
String destFolder = "c:/test/myfiles";
// Create a TarInputStream
TarInputStream tis = new TarInputStream(new BufferedInputStream(new FileInputStream(tarFile)));
while (( entry = tis.getNextEntry() ) != null) {
System.out.println( "Extracting: " + entry.getName() );
int count;
byte data[] = new byte[BUFFER];
if (entry.isDirectory()) {
new File( destFolder + "/" + entry.getName() ).mkdirs();
continue;
} else {
int di = entry.getName().lastIndexOf( '/' );
if (di != -1) {
new File( destFolder + "/" + entry.getName().substring( 0, di ) ).mkdirs();
}
}
FileOutputStream fos = new FileOutputStream( destFolder + "/" + entry.getName() );
BufferedOutputStream dest = new BufferedOutputStream( fos );
while (( count = tis.read( data ) ) != -1) {
dest.write( data, 0, count );
}
dest.flush();
dest.close();
}
}
编辑:
我已经编辑了上面的代码以检查是entry
a directory
,一旦我这样做了它就摆脱了FileNotFound
错误......上面的代码现在正常工作
答案 0 :(得分:3)
我认为您需要在打开FileOutputStream之前创建路径。
类似帖子Here
答案 1 :(得分:1)
关闭袖口,也许问题是你收到的条目包含一个尚未创建的子文件夹:'LAB3'?在这种情况下,文件系统中不存在目录“LAB3”,因为您尚未创建目录,并且文件“sg5”打算放在那里,因此当您尝试在包含LAB3的完全限定路径上创建文件时它抱怨。