.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??您的源(未压缩)数据。改名