Java压缩文件:有限制吗?
我正在用Java为我的应用程序创建一个备份例程。 但是,当zip文件超过4GB或包含65000多个文件(大约)时,zip文件已损坏 我还在测试ApacheCommons压缩以压缩到tar.gz,但它的文件名限制为100个字符。 我本想测试压缩到zip的API,但我想知道JavaZIP到底有什么问题 所以,真正的问题是:我做错了什么,这是Java Zip实现的限制,还是Zip格式本身的限制Java压缩文件:有限制吗?,java,zip,backup,gzip,tar,Java,Zip,Backup,Gzip,Tar,我正在用Java为我的应用程序创建一个备份例程。 但是,当zip文件超过4GB或包含65000多个文件(大约)时,zip文件已损坏 我还在测试ApacheCommons压缩以压缩到tar.gz,但它的文件名限制为100个字符。 我本想测试压缩到zip的API,但我想知道JavaZIP到底有什么问题 所以,真正的问题是:我做错了什么,这是Java Zip实现的限制,还是Zip格式本身的限制 谢谢。标准Zip文件有4GB的文件大小限制 有关更多信息,请参阅。。。。。。显然,如果使用ZIP64格式,您
谢谢。标准Zip文件有4GB的文件大小限制 有关更多信息,请参阅。。。。。。显然,如果使用ZIP64格式,您可以获得更大的文件 p、 如果你发现自己一次备份超过4GB的数据,也许你应该考虑另一种方法?也许拍摄版本化文件系统快照的东西更合适?引用: 原始的ZIP格式对各种内容有4 GiB的限制 (文件的未压缩大小、文件的压缩大小和总大小) 以及ZIP存档中的65535个条目限制 关于ZIP64: Java的内置Java.util.zip截至9月份不支持它 但它已经被添加到OpenJDK中,并计划包含在 爪哇7
据报道,这是一个在Java 7中修复的错误:
该罚单的一位评论员提到了一个解决办法。是的,有一个限制。如果你像这样浏览条目
int count = 0;
for (Enumeration<? extends ZipEntry> e = zipFile.entries(); e.hasMoreElements(); ) {
final ZipEntry ze = e.nextElement();
count++;
}
int count=0;
for(枚举第二个剪切粘贴引号中不支持的“it”是什么?(编辑:ZIP64),一组扩展来绕过第一个报价中提到的限制。嗯,谢谢。我已经怀疑了。至于版本控制,因为有时客户需要下载备份,所以版本控制对我来说不是最好的解决方案。不过,感谢您提供的信息。嗯……我尝试使用chilkat()还有apache commons…有人知道吗?它好吗?你真的很关注大约65000个文件。这不是敲响了一个2字节的钟吗?:)通常,当人们看到像255/256、65535/65536、2147483647/2147483648之类的数字时,他们知道他们必须处理1字节、2字节(短)或4字节(整数)。如果你在这个数字附近,你可以直觉地认为你达到了字节限制。