3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(.Net)DotNetZipでZIPファイルを作る時の注意

(.Net)MemoryStreamのデータをGZipStreamで圧縮するときの注意点..で、.Netは標準のクラスで、GZIP(.gz)が作れることを書きましたが、Windowsではあまり使われていない形式なのでちょっと不便です。

ところが、DotNetZipというライブラリを使えば非常に簡単にZIPファイルを作ることができます。

詳しい使い方はマイコミジャーナル:【ハウツー】C#でZIPファイルを扱えるDotNetZip (1) .NETで書庫を作成、圧縮を見てもらえばいいんですが、ちょっと圧縮でハマったことがあったのでメモ。

とりあえずファイル一つ圧縮できればいいので下記のようなコードを書きました。

using (ZipFile zip = new ZipFile(Encoding.GetEncoding("shift_jis")))

{

zip.CompressionLevel = CompressionLevel.BestCompression;

//ファイルを追加

zip.AddFile("databse.mdb");

zip.Save("test.zip");

}

これでできたZIPを確認すると、フォルダ構成が基の圧縮元があったファイルのパスになっているのです。

つまり、こんな感じ。

mydocuments/Visual Studio 2008/Projects/ZIPTest/ZIPTest/bin/x86/Debug

まぁ、上記マイコミジャーナルの記事にも書いてあることなんですが、AddFile メソッドの第二引数でパスを明示的にしてしないとこうなるようです。

ということで、ZIPのルートに圧縮元ファイル置きたかったので、こうしました。

zip.AddFile("databse.mdb","");

しかし、このライブラリはホント手軽に使えるので便利ですね。