使用Java压缩文件:是否有限制?

我正在使用Java为我的应用程序创建一个备份例程。 但是,当zip文件超过4GB或文件(大约)超过65,000时,zip文件已损坏。

我也在测试Apache Commons Compression压缩到tar.gz,但文件名限制为100个字符。 我想测试这个压缩到压缩的API,但我想知道java zip的问题究竟是什么。

所以,真正的问题是:我做错了什么,它是Java Zip实现的限制,还是Zip格式本身的限制?

谢谢。

引自维基百科 :

原始ZIP格式对各种事物(文件的未压缩大小,文件的压缩大小和存档的总大小)具有4 GiB限制,以及ZIP存档中的65535个条目的限制。

和ZIP64:

Java的内置java.util.zip自2010年9月起不支持它,但它已被添加到OpenJDK并计划包含在Java 7中。

这是在Java 7中报告修复的错误: http : //bugs.sun.com/view_bug.do?video_id = 4681995

该门票上的一位评论者提到TrueZIP是一种解决方法。

标准Zip文件有4GB的文件大小限制。

有关更多信息,请参阅zip文件的维基百科条目 ……显然,如果您使用ZIP64格式,您可以获得更大的文件。

ps如果你发现自己一次尝试备份超过4GB的数据,也许你应该考虑采用不同的方法? 也许采用版本化文件系统快照的东西更合适?

是的,有一个限制。 如果你通过这样的条目

int count = 0; for (Enumeration e = zipFile.entries(); e.hasMoreElements(); ) { final ZipEntry ze = e.nextElement(); count++; } 

它将计入65535个条目,不再有。

Interesting Posts