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); } }