Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java压缩文件:有限制吗?_Java_Zip_Backup_Gzip_Tar - Fatal编程技术网

Java压缩文件:有限制吗?

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格式,您

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

我还在测试ApacheCommons压缩以压缩到tar.gz,但它的文件名限制为100个字符。 我本想测试压缩到zip的API,但我想知道JavaZIP到底有什么问题

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


谢谢。

标准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字节(整数)。如果你在这个数字附近,你可以直觉地认为你达到了字节限制。