備忘録

備忘録

C#で bzip2 の圧縮、展開を行う方法

Ⅰ. はじめに

タイトルの通り「C#で bzip2 の圧縮、展開を行う方法」です。
bzip2のマジックナンバーは「BZh」(45 5A 68)です。
f:id:kagasu:20180214183022p:plain

Ⅱ. SharpZipLib をインストールする

SharpZipLib というライブラリを使います。

1. NuGet から SharpZipLib で検索し、インストールする。

f:id:kagasu:20170519230429p:plain
※.NET Standard 版もありますが、作成者の名前が異なるので非公式リリースのような気がします。
(深く調べていないので詳細は不明です。)
f:id:kagasu:20170519230500p:plain

Ⅲ. サンプル

1. 圧縮する

private byte[] BZip2Compress(byte[] bytes)
{
  var outStream = new MemoryStream();
  BZip2.Compress(new MemoryStream(bytes), outStream, true, 9);
  return outStream.ToArray();
}

2. 展開する

private byte[] BZip2Decompress(byte[] bytes)
{
  var outStream = new MemoryStream();
  BZip2.Decompress(new MemoryStream(bytes), outStream, true);
  return outStream.ToArray();
}

Ⅳ. その他

isStreamOwner を true にすると自動的に stream を close してくれます。
level は 0-9 までの数値です。0が圧縮率が最低で、9が圧縮率が最高です。