【问题标题】:Writing compressed gzipstream to a file将压缩的 gzipstream 写入文件
【发布时间】:2013-10-11 09:26:14
【问题描述】:

我有一个已压缩的gzipstream,我想将其写入文件。现在的问题是压缩的gzipstream 不支持读取。下面是我的代码,gzipstream 从memorystream 读取stream,然后我想将其写入filestream

using (var stream = new MemoryStream())
{
    using (FileStream file = new FileStream(@"c:\newest.xml.gz", 
        FileMode.Create, FileAccess.Write))
    {
        using (GZipStream gzs = new GZipStream(file, CompressionLevel.Fastest))
        {
            stream.CopyTo(gzs);
        }
    }  
} 

知道如何从压缩的gzipstream 创建filestream 吗?

编辑:

那是我的错,很抱歉浪费了您的时间。为了将来参考,上面的代码应该可以工作,问题出在其他地方。

【问题讨论】:

  • 为什么要先压缩stream再解压?
  • 基本上我需要压缩文件并将其作为 .gz 存储在我的文件系统中...
  • 那你为什么用gzsCompressionMode.Decompress
  • 我的错,那是错误的代码块......
  • 我正要发布一个关于如何写入压缩文件的答案,但是在你改变之后你的问题是你做得正确,据我所知,你不应该再遇到错误描述。

标签: c# .net gzipstream


【解决方案1】:

您似乎正在读取和写入相同的内存流。我认为这是不可能的;您应该使用两种不同的流:一个用于读取,另一个用于写入:

using (gzipStream = new GZipStream(writeStream,CompressionLevel.Fastest))
{
    readStream.CopyTo(gzipStream);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多