gpt4 book ai didi

java - 查找 GZIP 文件中文件的大小

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:48 25 4
gpt4 key购买 nike

有没有办法在 java 中找出 GZIP 文件中原始文件的大小?

例如,我有一个 15 MB 的文件 a.txt,它已被 GZip 压缩为大小为 3MB 的 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 将解码整个输入并为您提供可靠的长度。

关于java - 查找 GZIP 文件中文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com