2009-08-28 189 views
16

我有一個名爲ZippedXmls.tar.gz的tarred gunzip文件,裏面有2個xml文件。 我需要以編程方式解壓縮此文件,輸出應該是2 xmls複製到一個文件夾中。使用C解壓縮.gz文件#

如何使用C#實現此目的?

+2

如何在一個.gz文件中存儲兩個2「xmls」?或者它實際上是一個.tar.gz文件? – dtb 2009-08-28 16:50:55

+0

請注意,gzip標準僅壓縮和解壓縮字節流 - 如果您壓縮了一組文件,它們可能會在被壓縮之前歸檔爲單個文件,正如dtb所暗示的那樣。 – 2009-08-28 17:17:04

回答

33

我所使用的.NET的內置GZipStream爲gzip壓縮字節流和它工作得很好。我懷疑你的文件在被壓縮之前被首先塗柏油。

你自找的代碼,所以這裏是一個樣本,假設你有一個是壓縮單個文件:

FileStream stream = new FileStream("output.xml", FileMode.Create); // this is the output 
GZipStream uncompressed = new GZipStream(stream, CompressionMode.Decompress); 

uncompressed.Write(bytes,0,bytes.Length); // write all compressed bytes 
uncompressed.Flush(); 
uncompressed.Close(); 

stream.Dispose(); 

編輯:

你已經改變了你的問題,這樣的文件是一個tar.gz文件 - 從技術上講,我的答案不適用於您的情況,但我會將其保留給希望處理.gz文件的人員。

+0

是的,該文件被tarred,然後zipped.how我檢索2 xml在這種情況下呢?謝謝你的幫助。 – 2009-08-28 17:47:54

+0

sharpziplib就是你想要使用的,然後。它處理tar.gz文件。 – 2009-08-28 17:52:04

+0

感謝查理給我們的幫助! – 2009-08-29 15:31:46