我有幾個GB的大小壓縮文件,我想要得到的解壓縮的內容的大小,但不希望實際解壓文件在C#中,什麼可能是圖書館,我可以使用?當我的。廣州文件點擊右鍵,選擇屬性,然後在Archive
選項卡下有一個屬性名稱TotalLength
這顯示該值。但我想以編程方式使用C#獲得它..任何想法?GZIP文件總長
GZIP文件總長
回答
最後4個字節GZ文件包含的長度。
因此,它應該是這樣的:
using(var fs = File.OpenRead(path))
{
fs.Position = fs.Length - 4;
var b = new byte[4];
fs.Read(b, 0, 4);
uint length = BitConverter.ToUInt32(b, 0);
Console.WriteLine(length);
}
public static long mGetFileLength(string strFilePath)
{
if (!string.IsNullOrEmpty(strFilePath))
{
System.IO.FileInfo info = new System.IO.FileInfo(strFilePath);
return info.Length;
}
return 0;
}
編輯:請參閱由Leppie和Gabe的答案;我保持這個(而不是刪除)的唯一原因是,如果你懷疑的長度可能有必要> 4GB
gzip的,這些數據似乎並沒有直接可用 - 我「VE看着GZipStream
和SharpZipLib相當於 - 既不工作。我建議最好是在本地運行它:
long length = 0;
using(var fs = File.OpenRead(path))
using (var gzip = new GZipStream(fs, CompressionMode.Decompress)) {
var buffer = new byte[10240];
int count;
while ((count = gzip.Read(buffer, 0, buffer.Length)) > 0) {
length += count;
}
}
如果它是一個zip,然後SharpZipLib:
long size = 0;
using(var zip = new ZipFile(path)) {
foreach (ZipEntry entry in zip) {
size += entry.Size;
}
}
感謝馬克,第一種方法爲我工作..但它的時間太長計算2 GB未壓縮的文件......這應該是我們在循環指望...是不是有什麼快捷方式? – 2011-01-12 07:40:23
@Ummar:Gabe和我都解釋了這樣做的「正確」方式。上面的方式可以工作,但想象一下在1000GB的2GB文件上使用它,這將會持續下去。 – leppie 2011-01-12 07:46:46
最後一個。廣州文件的字節是未壓縮輸入尺寸模數2^32。如果您的未壓縮文件不大於4GB,只需讀取文件的最後4個字節即可。如果你有一個更大的文件,我不確定沒有解壓縮流是可能的。
- 1. 一堆gzip文件文件夾的總大小
- 2. gzip文件寫入
- 3. Dreamweaver和GZIP文件
- 4. 服務gzip文件
- 5. 如何確定gzip文件的內容長度?
- 6. Gzip壓縮的js文件加載時間較長
- 7. 如果gzip文件是通過組合多個gzip文件創建的,Chrome不會解壓縮gzip文件
- 8. gzip文件夾及其子文件夾
- 9. git拉gzip文件回購?
- 10. 如何解壓gzip文件
- 11. C#解壓.GZIP到文件
- 12. NLTK - 的gzip壓縮文件
- 13. 反向讀取gzip文件
- 14. 網頁上的GZIP文件
- 15. 隨機訪問gzip文件?
- 16. Flume傳輸gzip文件
- 17. 用python修改gzip文件
- 18. Cron Perl文件Gzip備份
- 19. Hadoop gzip壓縮文件
- 20. PHP:加載gzip JavaScript文件
- 21. Gzip文件和Angular 2
- 22. gzip表單輸入文件
- 23. 的GZip最近的文件
- 24. Perl回讀和gzip文件
- 25. GZip每個文件分開
- 26. 使用GZIP下載文件
- 27. gzip在cython文件中
- 28. 蟒蛇gzip文件到S3
- 29. 使用crontab來gzip文件
- 30. 如何使用golang的「compress/gzip」軟件包來gzip文件?
的信息可能會出現在gzip頭。但我無法幫助更多。 – leppie 2011-01-12 07:01:01