2016-09-27 68 views
0

私はそれがZIP64を通して可能であるべき見つけzipfile>4 GBJava 8のzipファイル> 4 GB。持つZipException:無効なCENヘッダ(悪い署名)

上のJava 1.8.0_60と、このエラーを抱えています。

ZipFile zipFile = new ZipFile(zippedFile); 

エラー:

java.util.zip.ZipException: invalid CEN header (bad signature) 
    at java.util.zip.ZipFile.open(Native Method) 
    at java.util.zip.ZipFile.<init>(ZipFile.java:219) 

私はZIP64を使用するための別の方法でエントリを取得する必要がありますか?

+0

FileInputStream fInput = new FileInputStream(zipFileName); ZipInputStream zipInput = new ZipInputStream(fInput); ZipEntry entry = zipInput.getNextEntry(); while(entry != null){ String entryName = entry.getName(); File file = new File(destinationFolder + File.separator + entryName); // Do whatever you need with the file here } 
大きなファイルの

クロストピック/docs/technotes/guides/io/fsp/zipfilesystemprovider.html) - 興味深いでしょう。 –

+0

結果のzipファイルが(あなたのように)不正な形式になっている場合は、ファイルを閉じていない可能性が最も高い原因です。 – OldCurmudgeon

+0

@OldCurmudgeon:zipファイルが有効です – Bart

答えて

2

私はこのように行うだろう:あなたは、[JavaのZIPファイルシステム](http://docs.oracle.com/javase/7を試みることができるRead large files in Java

+0

これはエラーなしでした。ありがとう。私は投票しましたが、私はまだそれを見ても十分な評判はありません。 – Bart

+0

私はさらにそれを試し、それにいくつかのパフォーマンスの問題を発見した。私はちょうどzipentriesを得ることに興味があります。 「新しいZipFile(ファイル)」では、即座にそれらを入手しています。ストリームでは、ファイル全体を読み込んでエントリを取得するという印象を受けます。続行するか、新しいスレッドを開くべきか考えていますか? – Bart

+0

これで、エントリ内の内容を確認するのではなく、zipされたファイルのリストだけを読みたいのですか? –

関連する問題