如何使用SharpCompress的’BZip2Stream来压缩字符串?

我试图使用SharpCompress’BZip2Stream压缩字符串(str)但无法实现它。 以下是我到目前为止的代码,

 public static string Compress(string str) { var data = Encoding.UTF8.GetBytes(str); using (MemoryStream stream = new MemoryStream()) { using (BZip2Stream zip = new BZip2Stream(stream, SharpCompress.Compressor.CompressionMode.Compress)) { zip.Write(data, 0, data.Length); var compressed = Encoding.UTF8.GetString(stream.ToArray()); return compressed; } } } 

无论我传递给str是什么字符串,它总是返回BZh

任何帮助是极大的赞赏!

我相信你需要完成/关闭/刷新bzip2流,以确保在从内存流中读取数据之前将所有压缩数据写入内存流。 尝试:

 using (MemoryMemoryStream stream = new MemoryStream()) { using (BZip2Stream zip = new BZip2Stream(stream, SharpCompress.Compressor.CompressionMode.Compress)) { zip.Write(data, 0, data.Length); zip.Close(); } var compressed = Encoding.UTF8.GetString(stream.ToArray()); return compressed; } 
Interesting Posts