GZipStream工作,但扩展丢失

本文关键字:扩展 工作 GZipStream | 更新日期: 2023-09-27 18:11:19

我使用以下代码来压缩文件,它工作得很好,但当我用WinRar解压缩时,我得到原始文件名而没有扩展名,任何线索为什么文件名是myReport.xls当我解压缩时,我只得到myReport ?

using (var fs = new FileStream(fileName, FileMode.Open))
{
    byte[] input = new byte[fs.Length];
    fs.Read(input, 0, input.Length);
    fs.Close();
    using (var fsOutput = new FileStream(zipName, FileMode.Create, FileAccess.Write))
    using(var zip = new GZipStream(fsOutput, CompressionMode.Compress))
    {
        zip.Write(input, 0, input.Length);
        zip.Close();
        fsOutput.Close();
    }
}

GZipStream工作,但扩展丢失

GZip只压缩一个文件-不知道文件名。因此,如果压缩文件myReport.xls,您应该将其命名为myReport.xls.gz。在解压缩时,最后一个文件扩展名将被删除,因此您最终将获得原始文件名。

它在Unix/Linux中使用了很长时间

确实很奇怪。一个简短的搜索出现了以下内容:

http://dotnetzip.codeplex.com/discussions/268293

表示GZipStream无法知道正在写入的流的名称,并建议您直接设置FileName属性。

希望对你有帮助。