簡単に ZIP ファイルを扱う方法

DotNetZip というライブラリを使えば、ファイルの ZIP 圧縮・解凍や ZIP ファイルの操作が簡単に実現できます。

似たようなライブラリで SharpZipLib がありますが、DotNetZip の方が簡単に利用できます。

ZIP ファイルの作成

using (ZipFile zip = new ZipFile(@"C:\Images.zip", Encoding.GetEncoding(932)))
{
    // ファイルを追加
    zip.AddFile(@".\Images\Desert Landscape.jpg");
    zip.AddFile(@".\Images\海\Dock.jpg");
    zip.AddFile(@".\Images\植物\Creek.jpg");

    // 保存
    zip.Save();
}

ディレクトリもちゃんと作成されます。
コンストラクタでエンコードを指定しないと、日本語が使えないみたいです。
932 って何でしょうね?

ZIP ファイルの解凍

using (ZipFile zip = new ZipFile(@"C:\Images.zip", Encoding.GetEncoding(932)))
{
    // フォルダ名を指定して全て解凍
    // 上書き許可
    zip.ExtractAll(@"C:\", true);
}

ZIP ファイルの中身を閲覧

using (ZipFile zip = ZipFile.Read(@"C:\Images.zip", Encoding.GetEncoding(932)))
{
    // ZIP の中身を全て列挙
    foreach (ZipEntry entry in zip.Entries)
    {
        Console.WriteLine(entry.FileName);
    }
}