簡體   English   中英

如何在C#中使用GZipStream解壓縮?

[英]How to decompress with GZipStream in C#?

我的問題是我找不到解壓縮文件的解決方案。 壓縮文件時不會出現錯誤消息,但是我不知道這是否正確。

這是我壓縮文件的代碼:

using (StreamReader sr = new StreamReader(File.Open(srcFile, FileMode.Open), true))
using (GZipStream zip = new GZipStream(File.Open(destFile, FileMode.OpenOrCreate), CompressionMode.Compress, false))
using (StreamWriter sw = new StreamWriter(zip, Encoding.UTF8)) {
    while (!sr.EndOfStream) {
        sw.Write((char)sr.Read());
    }
}

然后,我嘗試使用以下代碼壓縮壓縮文件:

using (GZipStream zip = new GZipStream(File.Open(srcFile, FileMode.Open), CompressionMode.Decompress, false))
using (StreamReader sr = new StreamReader(zip, true))
using (StreamWriter sw = new StreamWriter(File.Open(destFile, FileMode.OpenOrCreate), Encoding.UTF8)) {
    while (!sr.EndOfStream) {
        sw.Write((char)sr.Read());
    }
}

解壓縮后的文件的內容與源文件的內容不同,而且我不知道自己在哪里犯了錯誤。

在此先感謝您的幫助。

我為我的英語不好而感到抱歉,但是英語不是我的強項。 :/

未指示使用StreamReader / Writer。 如果文件不是文本文件,則肯定會破壞文件內容。 解壓縮后的文件將始終具有BOM表,原始文件中可能會丟失該BOM表。

根本沒有理由使用這些類,GZipStream不在乎。 而是使用FileStream,這是確保解壓縮的字節與原始文件中的字節完全匹配的唯一方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM