首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeflateStream CopyTo MemoryStream

DeflateStream CopyTo MemoryStream
EN

Stack Overflow用户
提问于 2018-07-01 10:27:57
回答 1查看 1.3K关注 0票数 5

需要压缩和解压缩MemoryStream,但是CopyTo似乎不像预期的那样工作吗?为什么?怎么解决这个问题?

代码语言:javascript
复制
public static MemoryStream Compress(MemoryStream originalStream)
{
    Console.WriteLine("Original before compressing size: {0}", originalStream.Length.ToString());
    MemoryStream compressedMemoryStream = new MemoryStream();

    using (DeflateStream deflateStream = new DeflateStream(compressedMemoryStream, CompressionMode.Compress, true))
    {
        originalStream.CopyTo(deflateStream);
    }
    Console.WriteLine("Compressed size: {0}", compressedMemoryStream.Length.ToString());
    return compressedMemoryStream;
}

public static void Decompress(MemoryStream compressedStream)
{
    Console.WriteLine("Compressed before decompressing size: {0}", compressedStream.Length.ToString());
    using (MemoryStream decompressedFileStream = new MemoryStream())
    {
         using (DeflateStream decompressionStream = new DeflateStream(compressedStream, CompressionMode.Decompress, true))
         {
              decompressionStream.CopyTo(decompressedFileStream);
         }
         Console.WriteLine("Decompressed size: {0}", decompressedFileStream.Length.ToString());
    }
}

输出:

代码语言:javascript
复制
Original before compressing size: 5184054
Compressed size: 0
Compressed before decompressing size: 0
Decompressed size: 0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-01 10:45:33

CopyTo开始从源流的当前位置复制字节。

由于您发布的压缩流大小为0,所以我确信originalStream位于流的末尾,因此没有复制/压缩字节。

确保位置是0,这样它就可以找到要复制和压缩到流中的任何数据。

正如@xanatos所提到的,同样的情况也适用于Decompress,所以在解压缩它之前,请确保compressedStream也位于0。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51122458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档