0

我正在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();
    }
}

编辑:

我已经编辑了上面的代码来检查entrya directory,一旦我这样做了,它就消除了FileNotFound错误......上面的代码现在可以工作了

4

2 回答 2

3

我认为您需要在打开 FileOutputStream 之前创建路径。

类似的主题在这里

于 2012-07-24T18:06:54.220 回答
1

刚刚开始,也许问题是您收到的条目包含一个尚未创建的子文件夹:'LAB3'?在这种情况下,文件系统中不存在目录“LAB3”,因为您尚未创建它,并且文件“sg5”打算放置在那里,因此当您尝试在包含 LAB3 的完全限定路径上创建文件时它抱怨。

于 2012-07-24T17:58:07.710 回答