0

(str)SharpCompress の BZip2Stream を使用して文字列を圧縮しようとしていますが、達成できません。以下は私がこれまでに持っているコードです、

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

どんな助けでも大歓迎です!

4

1 に答える 1

0

メモリ ストリームからデータを読み取る前に、すべての圧縮データがメモリ ストリームに書き込まれるようにするために、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;
}
于 2015-08-31T07:26:41.640 に答える