Как использовать 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;
}