c#gzipstream减压更像是抑郁症

Tim*_*erz -4 c# compression gzipstream

为什么我不能在这里使用此代码?我想在一个先前压缩的字节数组上调用它....无论如何,它只返回一个空字符串...

    public static string FromGZipToString( this byte[] source )
    {
        using( MemoryStream stream = new MemoryStream( ) )
        {
            stream.Write( source, 0, source.Length );

            using (var gzipstream = new GZipStream(stream, CompressionMode.Decompress))
            using (var reader = new StreamReader(gzipstream)) 
            {
               return reader.ReadToEnd( );
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是压缩代码的方式....

    public static byte[] ToGZip( this string source )
    {
        using( var stream = new MemoryStream( ) )
        using( var compressor = new GZipStream( stream, CompressionMode.Compress ) )
        {
            var bytes = System.Text.UTF8Encoding.UTF8.GetBytes( source );

            compressor.Write( bytes, 0, bytes.Length );

            return stream.ToArray( );
        }
    }
Run Code Online (Sandbox Code Playgroud)

Wil*_*ill 5

您的压缩例程有问题.在压缩机关闭(或处理)之前,它不应该从流读取,允许压缩器完成将所有字节写入蒸汽.

看看我对这个问题的回答:压缩和解压缩源数据会得到与源数据不同的结果