0

私はjtar-1.1tarファイルからファイルを抽出しようとしています.imは次のコードを使用してファイルを抽出しようとしています

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 に答える