簡體   English   中英

DeflateStream.Flush() 沒有功能?

[英]DeflateStream.Flush() has no functionality?

我試圖使用 DeflateStream 壓縮字節數組。 擰完數據后,我正在尋找一種關閉壓縮的方法(標記為完成)。 起初,我嘗試了 Dispose(),然后是 Close(),但這些都使結果 MemoryStream 無法讀取。 然后我想我可能需要Flush(),但是描述說“這個方法的當前實現沒有功能”

在此處輸入圖像描述

但似乎沒有 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;

在此處輸入圖像描述

“此方法的當前實現沒有功能”是什么意思?

這意味着:它什么都不做,所以單獨調用Flush()並沒有幫助。 您需要關閉 deflate stream 以完成寫入所需的內容,但不關閉底層 stream (當您寫入 ZF7B44CFFAFD5C52223D5498196C8A2E7 時,將寫入塊,直到填充內部緩沖區 - 但最終部分塊無法寫入內部緩沖區數據已准備好終止;並非所有壓縮序列都支持能夠在任意點刷新,然后在其他塊中恢復壓縮數據)

你可能想要的是:

using (var dstream = new DeflateStream(output, CompressionLevel.Optimal, true))
{
  // Your deflate code
}
// Now check the memory stream

注意額外的bool leaveOpen參數用法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM