.net core 无法从gzipstream复制到memorystream

.net core 无法从gzipstream复制到memorystream,.net-core,.net Core,我想使用System.IO.Compression.GZipStream压缩内存中的二进制文件。为此,我使用以下方法 public byte[] Encrypt() { var payload = GetPayload(); Console.WriteLine("[!] Payload Size: {0} bytes", payload.Length); using (var compressedStream = new MemoryStream(payload))

我想使用
System.IO.Compression.GZipStream
压缩内存中的二进制文件。为此,我使用以下方法

public byte[] Encrypt()
{
    var payload = GetPayload();
    Console.WriteLine("[!] Payload Size: {0} bytes", payload.Length);

    using (var compressedStream = new MemoryStream(payload))
    using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress))
    using (var resultStream = new MemoryStream())
    {
        zipStream.CopyTo(resultStream);
        return resultStream.ToArray();
    }
}
但是当
.CopyTo
时,我得到了System.NotSupportedException:流不支持读取。

您需要“反转”您的逻辑:在空内存流上创建gzip流,并将原始内容复制到此gzip流中:

using var compressedData = new MemoryStream();
using var gzip = new GZipStream(compressedData);
originalUncompressedStream.CopyTo(gzip); // <- "magic" happens here
gzip.Flush();

// and "rewind" result stream back to beginning (for next reads)
compressedData.Position = 0;
使用var compressedData=newmemorystream();
使用var gzip=new GZipStream(compressedData);
originalUncompressedStream.CopyTo(gzip);// 您需要“反转”您的逻辑:在空内存流上创建GZipStream,并将原始内容复制到此gzip流中:

using var compressedData = new MemoryStream();
using var gzip = new GZipStream(compressedData);
originalUncompressedStream.CopyTo(gzip); // <- "magic" happens here
gzip.Flush();

// and "rewind" result stream back to beginning (for next reads)
compressedData.Position = 0;
使用var compressedData=newmemorystream();
使用var gzip=new GZipStream(compressedData);

originalUncompressedStream.CopyTo(gzip);//把问题再读一遍。修复了我的答案。originalStream??您的源(未压缩)数据。重新命名再把问题读一遍。修复了我的答案。originalStream??您的源(未压缩)数据。改名