2016-09-27 111 views
0

我有一個zipfile>4 GBJava 8 zipfile> 4 GB。拋出:ZipException:無效CEN頭(錯誤簽名)

這個錯誤與Java 1.8.0_60我發現,應該通過ZIP64是可能的。

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

你可以嘗試一【JAVA拉鍊文件系統(http://docs.oracle.com/javase/7 /docs/technotes/guides/io/fsp/zipfilesystemprovider.html) - 會很有趣。 –

+0

如果生成的zip文件格式不正確(就像你有),那麼最可能的原因是你沒有關閉文件。 – OldCurmudgeon

+0

@OldCurmudgeon:zip文件有效 – Bart

回答

2

我會做這樣的:

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 
} 

大文件跨話題:Read large files in Java

+0

這樣做沒有錯誤。謝謝。我投了票,但我還沒有足夠的聲望,顯然看不到它。 – Bart

+0

我試了一下,發現它有一些性能問題。我只是有興趣獲得zipentries。使用「新的ZipFile(文件)」我可以立即得到它們。隨着流我得到的印象它加載整個文件來獲取條目。你有一個想法如何繼續,或者我應該打開一個新的線程? – Bart

+0

因此,您不想閱讀條目中的內容,而只是查看ziped文件的列表? –

相關問題