Top > ZIP > ZIPファイルを作る

ZIPファイルを作る

本記事は、JDKの標準APIでありながら、あまり入門書などに説明されていない
ZIPファイルの作成方法を説明します。

ZipEntry

ZIPファイルの作成も、ZipOutputStream クラスのコツさえつかめば
非常に簡単です。手順は、下記のようになります。

  • ZIPファイルを ZipOutputStreamでオープンする
  • アーカイブするファイルを示す ZipEntry を作成します
  • ZipOutputStream.putEntry()メソッドに ZipEntryを渡します
  • ZipOutputStreamに、出力したいデータを書き出します。
  • アーカイブしたいファイルの下図だけ、ZipEntryの作成から繰り返す

サンプルソース

下記のソースで、aZipFile に「text.txt」と「subdir/test2.txt」の
2つのファイルをアーカイブします。
今回は、話を単純にするために、2つのファイルを固定的に書き出していますが
応用すれば、あるディレクトリ以下を全てArchiveすることも簡単にできるでしょう。

出力したファイルの確認

参考ですが、作成した ZIPファイルが正しく作られているかどうかは、
WindowsXP以降であれば、そのZIPファイルをダブルクリックするだけで、
Windows の ファイルエクスプローラが、中身を表示してくれます。

ZIPファイルというのは、実は Windowsが標準サポートしているので、
Windows間で、まとめてファイルをやり取りするには、便利なアーカイブ方法
になっていると思います。

先週、今週で、Javaから Zipファイルを読み書きする手法をマスターすれば、
複数のファイルをアプリ間で受け渡しするような場合、ZIPファイルの導入を
検討してはいかがでしょうか。

ZIPファイルを使うメリット

ZIPファイルを使うメリットは2つあり、「データを圧縮している」ことと、
「標準規格なのでWindowsで開けば、デバッグも簡単」と言えるでしょう。

特にデバッグが簡単というのがミソで、2つのアプリ間でデータを受け渡し
するときに、独自の圧縮・アーカイブを行うと、上手く動作しない場合に、
データを渡すアプリのバグなのか、データを受け取るアプリのバグなのか、
それすら分からなくなってしまいます。

ZIPファイルのような、Windowsでも中身が見れるファイルを受け渡しすることで
どちらのアプリが間違っているか、客観的に判断できるようになります。

以上で、今週は終了です。