gpt4 book ai didi

c# - DeflateStream.Flush() 没有功能?

转载 作者:行者123 更新时间:2023-12-04 07:51:33 24 4
gpt4 key购买 nike

我试图使用 DeflateStream 压缩字节数组。拧完数据后,我正在寻找一种关闭压缩的方法(标记为完成)。起初,我尝试了 Dispose(),然后是 Close(),但这些都使结果 MemoryStream 不可读。然后我想我可能需要Flush(),但是描述说“这个方法的当前实现没有功能”
enter image description here
但似乎没有 Flush(),结果似乎是空的。 “此方法的当前实现没有功能”是什么意思?

    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;
enter image description here

最佳答案

What does it mean that "The current implementation of this method has no functionality" ?


这意味着:它什么都不做,所以调用 Flush()本身不会有帮助。您需要关闭 deflate 流以完成写入所需的内容,但不关闭底层流( block 将在您写入流时写入,因为内部缓冲区已填满 - 但最终部分 block 无法写入,直到数据已准备好终止;并非所有压缩序列都支持能够在任意点刷新,然后在其他 block 中恢复压缩数据)
你可能想要的是:
using (var dstream = new DeflateStream(output, CompressionLevel.Optimal, true))
{
// Your deflate code
}
// Now check the memory stream
注意额外的 bool leaveOpen参数使用。

关于c# - DeflateStream.Flush() 没有功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66947942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com