Paradigm Shift Design

ISHITOYA Kentaro's blog.

C#でZipファイル作成

ファイルを固めて転送するために、Zipファイルを生成したかったのだけれども、J#のライブラリを使ってZIP圧縮、展開(解凍)、リスト表示を行う: .NET Tips: C#, VB.NET辺りをみると妙に複雑。


下のほうにあった、
.NET Zip Library #ziplib (SharpZipLib)を試してみることにしたんだけれども、ヘルプを探しても見つからない。下のほうに
SharpZipLib - Main Page - SharpDevelop Wiki
があった。


で、.Net Tipsのページにあった複雑なコードと打って変わって、

How to create a Zip File 

FastZip fastZip = new FastZip();
bool recurse = true; 
fastZip.CreateZip("fileName.zip", @"C:\SourceDirectory", recurse, "");

と簡潔なコードが書いてあった。
というわけで、

using ICSharpCode.SharpZipLib.Zip;
namespace Test{
   public class ZipTest{
        public void CreateZipArchive(String filename, String target)
        {
            FastZip zip = new FastZip();
            zip.CreateZip(filename, target, true, "^(?!Thumbs.db)");
        }

というようなコードを書いて動かしてみた。うむ。問題ない。
チョット詰まったのは、第4引数。
これは、「アーカイブに含めるファイルのパターン」を正規表現で記述する。つまり含めないファイルを列挙する場合は、上みたいに書くといい。
全てのファイルを含める場合には空文字列にすればいい。
第5引数を指定する場合は、「アーカイブに含めるディレクトリのパターン」を正規表現で記述する。


結局これはヘルプには書いていなかったので、ソースコードを読みました…。

というわけで。zipファイルができたからあとはアップロード。