ZipOutputStream的文件大小限制?

bar*_*uin 1 java compression zip stream

我正在使用ZipOutputStream来创建ZIP文件.它运行正常,但Javadoc非常稀疏,所以我对ZipOutputStream的特性提出了疑问:

  1. 支持的最大文件大小是否有限制?ZIP中包含的文件和生成的ZIP文件本身?该size论点是long,但谁知道.(我们假设文件系统没有限制.)

  2. 什么是最小输入文件大小,证明使用DEFLATED方法是正确的?

我将始终使用ZipInputStream读取生成的ZIP文件.

bar*_*uin 5

最重要的方面是,在当前的Java-7 JDK中,ZipOutputStream根据2012 PKZIP规范创建ZIP文件,该规范还包括对ZIP64的支持.请注意,ZIP64功能最初有错误,但任何最新版本的Java 7 JDK都可以.

  1. 因此,最大文件大小为2 64 -1字节.我尝试使用10 GB的测试文件.这比标准ZIP的4 GB大得多.我可以将它添加到ZIP文件中,没有任何问题,如果生成的ZIP文件本身超过4 GB.

  2. 证明使用DEFLATED方法的最小文件大小是22个字节.这与最小ZIP文件大小无关,偶尔也是22个字节(对于空ZIP文件).我通过添加a长度增加的s 字符串来经验地确定这个数字(见下图).这样一系列相同的字符压缩得很好,所以在现实世界中,收支平衡点会更高.

放气与储存