2012-04-10 73 views
8

我試圖在JAVA中打開一個ZIP文件。下面非常大的zip文件(> 50GB) - > ZipException:無效的CEN標頭

的代碼工作正常,除了有一些大的文件在這種情況下,我得到以下異常:

Exception in thread "main" 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:114) 
at java.util.zip.ZipFile.<init>(ZipFile.java:75) 

有一個已知的bug?這可能是由於JAVA中不支持更高的壓縮級別嗎?

請注意,我無法使用Winzip來解壓縮該文件,並且Linux下的gzip提供了有關數據長度的錯誤(未壓縮文件大約爲80 GB)。我不得不使用以下解決方法來解壓縮它:

gunzip -S .zip <file.zip> file 

任何想法都會非常有幫助。

代碼:

if (file.getExtension().equals("gz")) { 
    br = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(name)))); 
} 
else if (file.getExtension().equals("zip")) { 
    ZipFile zipFile = new ZipFile(name); // <-------------------FAILS HERE 
    Enumeration<? extends ZipEntry> entries = zipFile.entries(); 
    while (entries.hasMoreElements()) { 
     ZipEntry zipEntry = entries.nextElement(); 
     System.out.println("ZIP File in the archive:" + zipEntry.getName()); 
     br = new BufferedReader(new InputStreamReader(zipFile.getInputStream(zipEntry))); 
     break; 
    } 
} 
+1

也許阿帕奇百科全書壓縮有助於解決這個問題?據我所知,內置的zip實現並不是最好的。 – biziclop 2012-04-10 20:57:29

+2

默認壓縮實現有一個大小限制。您可能會發現這[回答](http://stackoverflow.com/a/6738811/1048330)有用。 – tenorsax 2012-04-10 20:57:51

回答

相關問題