由于扩展一个大的gzip文件需要相当长的时间(有时超过半分钟),我想在开始扩展之前知道扩展的大小(用于进度报告)。有没有办法知道它而不实际扩展?
更新:
对于大于4G字节(扩展大小)的文件,在没有实际扩展gzip文件的情况下,无法确定大小。但是,对于小于4G字节(扩展大小)的文件,实际扩展的大小将存储为gzip文件的最后4个字节,并且可以轻松检索:
(1..4).inject(0) do |v, i|
v += IO.read(file_name, 1, original_size - i)[0] * (2**8) ** (4 - i)
end
答案 0 :(得分:2)
我想找到解决方案,只想关闭这个问题。已经更新了它。
答案 1 :(得分:1)
我认为你不能得到一个确切的大小,因为这需要知道文件中各种字符串的实际频率,如果不扫描文件就不能这样做。你能进入实际的解压缩功能,并指出它的输入距离是多少(与输出的距离是多少)?