首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeflateStream.Flush()没有功能吗?

DeflateStream.Flush()没有功能吗?
EN

Stack Overflow用户
提问于 2021-04-05 03:34:17
回答 1查看 127关注 0票数 2

我试图使用DeflateStream压缩字节数组。在压缩数据之后,我正在寻找一种方法来关闭压缩(标记就这样做)。起初,我尝试了first ()然后关闭(),但是这些都使结果MemoryStream不可读。然后我想我可能需要刷新(),但是描述说“这个方法的当前实现没有功能”

但是,如果没有Flush(),结果似乎是空的。“此方法的当前实现没有功能”是什么意思?

代码语言:javascript
复制
    static void Main(string[] args)
    {
        byte[] result = Encoding.UTF8.GetBytes("わたしのこいはみなみのかぜにのってはしるわ");
        var output = new MemoryStream();
        var dstream = new DeflateStream(output, CompressionLevel.Optimal);
        dstream.Write(result, 0, result.Length);
        var compressedSize1 = output.Position;
        dstream.Flush();
        var compressedSize2 = output.Position;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-05 05:09:10

,“该方法的当前实现没有功能”是什么意思?

它的意思是:它什么也不做,所以调用Flush()本身是没有帮助的。您需要关闭放气流才能完成它所需的写入,但不需要关闭底层流(当您写入流时,内部缓冲区填充时将写入块--但在数据准备终止之前,无法写入最后的部分块;并非所有压缩序列都支持在任意点刷新,然后在其他块中恢复压缩数据)。

你可能想要的是:

代码语言:javascript
复制
using (var dstream = new DeflateStream(output, CompressionLevel.Optimal, true))
{
  // Your deflate code
}
// Now check the memory stream

注意额外的bool leaveOpen参数使用情况。

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

https://stackoverflow.com/questions/66947942

复制
相关文章

相似问题

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