GZipStream 可以工作,但扩展名丢失

发布于 2024-12-09 17:24:42 字数 573 浏览 0 评论 0 原文

我正在使用以下代码来压缩文件,它工作正常,但是当我用 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();
    }
}

I am using following code to zip a file and it works fine but when I decompress with WinRar I get the original file name without the extension, any clue why if filename is myReport.xls when I decompress I get only 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();
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我不吻晚风 2024-12-16 17:24:42

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

这就是它在 Unix/Linux 中多年来的使用方式......

GZip compresses only one file - without knowing the name. Therefore if you compress the file myReport.xls you should name it myReport.xls.gz. On decompression the last file extension will be removed so you end up with the original filename.

That its the way how it is used in Unix/Linux for ages...

苍风燃霜 2024-12-16 17:24:42

确实很奇怪。简短的搜索得出以下内容:

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

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

希望有帮助。

Very weird indeed. A brief search came up with the following:

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

Which says that GZipStream has no way of knowing the name of the stream that is being written, and suggests you set the FileName property directly.

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文