« @niftyポイント、実質終了ですね | Main | auのGPS機能の苦手な地域?? »

2011.01.08

7zip(lzma)形式で圧縮(C#)

C#で7zip形式のアーカイブファイルの作成を行ってみるテスト。

まずは、LZMA SDK。コンパイルすると、単独で使用可能なソースも一式含まれていますので、まずはそれを用いて圧縮のテスト。
・・・パフォーマンスの点から、ちょっと厳しいですねぇ・・・。7-zipから入手可能な7z.exeを用いて圧縮した時と比べると、3~4倍の処理時間がかかってしまっています。

次に見つけたのが、SevenZipSharp。7z.dllのラッパーとして提供されていることもあり、パフォーマンスとしてはいい感じです。

圧縮処理の部分だけをざっくりと書くと、以下のような感じ。

private void compress()
{
    SevenZipCompressor szc = new SevenZipCompressor();
    szc.CompressionMethod = CompressionMethod.Lzma;
    szc.CompressionMode = CompressionMode.Create;
    szc.CompressionLevel = CompressionLevel.Normal;
    szc.Compressing += new EventHandler(this.progress);
    szc.CompressFiles(@"C:\Test\test.7z", new string[] { @"C:\Test\a.txt", @"C:\Test\b.txt" });
}

public void progress(object obj, ProgressEventArgs e)
{
    Console.WriteLine(e.PercentDone.ToString());
}

ちなみに、SevenZipSharpライブラリのライセンスはLGPL(v3)とのこと。

|

« @niftyポイント、実質終了ですね | Main | auのGPS機能の苦手な地域?? »

プログラム」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference 7zip(lzma)形式で圧縮(C#):

« @niftyポイント、実質終了ですね | Main | auのGPS機能の苦手な地域?? »