有没有办法在不实际扩展的情况下获得扩展的gzip文件大小?

时间:2010-01-07 06:47:42

标签: ruby gzip

由于扩展一个大的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

2 个答案:

答案 0 :(得分:2)

我想找到解决方案,只想关闭这个问题。已经更新了它。

答案 1 :(得分:1)

我认为你不能得到一个确切的大小,因为这需要知道文件中各种字符串的实际频率,如果不扫描文件就不能这样做。你能进入实际的解压缩功能,并指出它的输入距离是多少(与输出的距离是多少)?