我有以下方法,由于某种原因,第一次调用Copy to似乎无济于事?有人知道为什么吗?
在方法的输入中被压缩,并且base64可以根据需要提供该方法。
private byte[] GetFileChunk(string base64)
{
using (
MemoryStream compressedData = new MemoryStream(Convert.FromBase64String(base64), false),
uncompressedData = new MemoryStream())
{
using (GZipStream compressionStream = new GZipStream(compressedData, CompressionMode.Decompress))
{
// first copy does nothing ?? second works
compressionStream.CopyTo(uncompressedData);
compressionStream.CopyTo(uncompressedData);
}
return uncompressedData.ToArray();
}
}
最佳答案
如果对Read()的第一次调用返回0,则Stream.CopyTo()也不起作用。尽管这表明GZipStream存在问题,但它不太可能出现这样的错误。创建压缩数据时,发生错误的可能性更大。就像先压缩0个字节,然后再压缩实际数据一样。
关于c# - 为什么我需要两个调用才能流式传输CopyTo?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3440065/