« @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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/50525956

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

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