使用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 extends ZipEntry> e = zipFile.entries(); e.hasMoreElements(); ) { final ZipEntry ze = e.nextElement(); count++; }
它将计入65535个条目,不再有。