代码之家  ›  专栏  ›  技术社区  ›  bryantsai

有没有一种方法可以在不实际扩展的情况下获得扩展的gzip文件大小?

  •  2
  • bryantsai  · 技术社区  · 15 年前

    由于扩展一个大型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 回复  |  直到 15 年前
        1
  •  2
  •   bryantsai    15 年前

    我已经找到了解决方案,只想结束这个问题。已在上面更新。

        2
  •  1
  •   Yuliy    15 年前

    我不认为你能得到一个精确的大小,因为这需要知道文件中各种字符串的实际频率,而你不扫描文件就不能做到这一点。您是否可以进入实际的解压函数,让它指示输入有多远(而不是输出有多远)?