2015-04-07 142 views
1

在c#中解壓縮gz文件已被問及在互聯網上的所有答案,但那不是我正在尋找。我需要一個庫,可以給我:閱讀gzip內容信息

1)gz文件內的文件的名稱。 2)其修改時間,因爲它最初來自它的原始位置。

gz解壓縮的每個例子都創建一個文件名,它是gz自己的文件名減去「.gz」擴展名,但那不是我想要的。我想要gz文件裏面的文件名,我也想修改它的日期。然後,當我解壓縮文件時,我將它指定爲修改日期,或者庫爲我做。

但是幾乎所有我見過的例子都創建了一個新文件,編寫解壓縮後的字節並關閉它,當然它不會擁有屬於它的原始修改日期,因爲它只是被創建並寫入。

任何人都可以幫忙。我已經使用了dotnetzip和sharpziplibs他們的例子有同樣的問題,他們的論壇沒有這樣的回答。

+0

我不認爲gzip甚至*有*這樣一個概念 - 是什麼讓你認爲它呢? –

+1

哦,據https://www.ietf.org/rfc/rfc1952.txt它*可能*設置 - 但只支持ISO-8859-1,這是有點可怕... –

+0

是啊,MTIME的東西,我讀過。你知道我有的gz文件,如果我使用winrar解壓縮它們,它們有很好的修改時間,這是他們在壓縮之前最初的修改時間。我需要能夠做到這一點在c# – user734028

回答

0

zlib提供了inflateGetHeader()函數,它用gzip頭中的所有信息填充一個結構。

你也可以自己解碼頭,格式比較簡單。 gzip頭和尾部格式記錄在RFC 1952中。

+0

嗯,我會看到,zlib將添加一個新的dll到我的項目中,我想它可以打開文件,尋找mtime的起始位置(可能是第5個字節),從那裏讀取4個字節並轉換爲日期時間(sharpziplib這樣做,我已經看到它,所以我會使用該來源)。一旦我完成,我會更新這篇文章。 – user734028