2

我的问题是我找不到解压缩文件的解决方案。压缩文件没有错误消息,但我不知道这是否正确。

这是我压缩文件的代码:

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());
    }
}

解压后的文件内容和源文件的内容不一样,不知道哪里出错了。

在此先感谢您的帮助。

我很抱歉我的英语不好,但英语不是我的强项。:/

4

1 回答 1

3

未指示使用 StreamReader/Writer。如果文件不是文本文件,它肯定会破坏文件内容。而且解压后的文件总会有一个BOM,原文件中可能会丢失。

没有理由使用这些类,GZipStream 不在乎。请改用 FileStream,这是确保解压缩字节与原始文件中的字节完全匹配的唯一方法。

于 2013-10-12T02:22:22.100 回答