Как использовать SharpCompress BZip2Stream для сжатия строки?

Я пытаюсь сжать строку (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,

Любая помощь очень ценится!

1 ответ

Я считаю, что вам нужно завершить / закрыть / очистить поток 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;
}
Другие вопросы по тегам