加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在GZIP文件中查找文件的大小

发布时间:2020-12-15 02:04:03 所属栏目:Java 来源:网络整理
导读:有没有办法找出原始文件的大小在 java中的GZIP文件中? 就像在,我有一个15 MB的文件a.txt已被GZip压缩到3GB的a.gz.我想知道a.gz中存在的a.txt的大小,而不解压缩a.gz. 解决方法 除了枪杀流之外,没有真正可靠的方法.您不需要保存解压缩的结果,因此您可以通过简
有没有办法找出原始文件的大小在 java中的GZIP文件中?

就像在,我有一个15 MB的文件a.txt已被GZip压缩到3GB的a.gz.我想知道a.gz中存在的a.txt的大小,而不解压缩a.gz.

解决方法

除了枪杀流之外,没有真正可靠的方法.您不需要保存解压缩的结果,因此您可以通过简单地读取和解码整个文件来确定大小,而不会占用解压缩结果的空间.

有一种不可靠的方法来确定未压缩的大小,即查看gzip文件的最后四个字节,即以小端序排序的模块232的未压缩长度.

这是不可靠的,因为a)未压缩的数据可能长于232个字节,并且b)gzip文件可能包含多个gzip流,在这种情况下,您将找到仅最后一个流的长度.

如果您控制gzip文件的源代码,您就知道它们由单个gzip流组成,并且您知道它们的压缩率低于232个字节,那么只有这样才能充满信心地使用最后四个字节.

pigz(可以在http://zlib.net/pigz/找到)可以双向完成. pigz -l会很快给你不可靠的长度. pigz -lt将解码整个输入并为您提供可靠的长度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读