为什么我不能在这里使用此代码?我想在一个先前压缩的字节数组上调用它....无论如何,它只返回一个空字符串...
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( );
}
}
}
这是压缩代码......
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( );
}
}
答案 0 :(得分:5)
您的压缩程序有问题。在压缩机关闭(或处理)之前,它不应该从流读取,允许压缩器完成将所有字节写入蒸汽。
查看我对此问题的回答:compressing and decompressing source data gives result different than source data