2010-01-07 60 views
2

由於擴展一個大的gzip文件需要相當長的時間(有時超過半分鐘),所以我想在擴展之前知道擴展的大小(用於進度報告目的)。有沒有一種方法知道它沒有實際擴大?有沒有辦法在不實際擴展的情況下獲得擴展的gzip文件大小?

更新

對於文件超過4G字節(擴大規模)大的,有知道的大小,而不實際擴展gzip文件沒有確切方法。然而,對於超過4G字節(擴大規模)小文件,實際尺寸擴展存儲爲最後4個字節的gzip文件,並可以很容易地檢索:

(1..4).inject(0) do |v, i| 
    v += IO.read(file_name, 1, original_size - i)[0] * (2**8) ** (4 - i) 
end 
+1

Duplicate:http://stackoverflow.com/questions/1965567/get-the-filesize-of-very-large-gz-file-on-a-64bit-platform/1965580#1965580 – pavium 2010-01-07 07:13:08

+0

接近重複,並在這裏包含**正確答案**:[獲取64位平臺上非常大的.gz文件的文件大小](http://stackoverflow.com/questions/1965567/get-the-filesize-of-very-大的gz-file-on-a-64bit平臺),請**參見凱文的回答** - TL; DR:不,沒有辦法,因爲ISIZE是「模32位」。對於文件> 4G,您需要解析整個文件以瞭解未壓縮的長度。 – quetzalcoatl 2017-03-19 11:08:19

回答

2

只想關閉這個問題,因爲我找到了解決方案。已經在上面更新了它。

1

我不認爲你可以得到一個確切的大小,因爲這需要知道文件中各種字符串的實際頻率,並且不掃描文件就無法做到這一點。你可以進入實際的解壓縮功能,並指出它的輸入有多遠(相對於輸出有多遠)?

相關問題