【问题标题】:Deflate stream not reading放气流不读
【发布时间】:2015-06-18 11:56:33
【问题描述】:

DeflateStream.Read 不起作用,我正在尝试从压缩的内存流中读取,但 read 的字节数组参数仍然为空。

        var memoryStream = new MemoryStream();

        var writeStream = new DeflateStream(memoryStream, CompressionLevel.Optimal, true);

        var readStream = new DeflateStream(memoryStream, CompressionMode.Decompress, true);

        var serializedPayloadBytes = Serialize(new Payload { Message = "Payload" });

        var serializedHeaderBytes = Serialize(new PayloadHeader { Length = serializedPayloadBytes.Length });

        var headerSize = serializedHeaderBytes.Length;

        var package = new byte[serializedHeaderBytes.Length + serializedPayloadBytes.Length];

        Buffer.BlockCopy(serializedHeaderBytes, 0, package, 0, serializedHeaderBytes.Length);

        Buffer.BlockCopy(serializedPayloadBytes, 0, package, serializedHeaderBytes.Length, serializedHeaderBytes.Length);

        writeStream.Write(package, 0, package.Length);

        writeStream.Flush();

        writeStream.Close();

        var arr = new byte[serializedHeaderBytes.Length];

        readStream.Read(arr, 0, headerSize);

arr 始终为空(所有字节均为零),memoryStream.ToArray() 有数据。

【问题讨论】:

    标签: c# stream compression deflatestream


    【解决方案1】:

    MemoryStreams 位置在写入后位于流的末尾。如果您想在写入后再次从同一流中读取,则必须将其设置回 0。

    memoryStream.Position = 0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      相关资源
      最近更新 更多