我有以下方法,由于某种原因,第一次调用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/

10-10 02:46