Java ZipOutputStreamを使って、フォルダを丸ごとZIPファイルに圧縮する




最近、ふとん圧縮袋の通販見ないねぇw

ZipOutputStreamを使って、フォルダを丸ごとZIPファイルに圧縮するサンプル

ZipOutputStreamを使って、フォルダを丸ごとZIPファイルに圧縮します。

実行結果

指定したファイル名でZIPファイルが作成されます。

サンプルの解説

ZIPファイルを作成するには、ZipOutputStreamを使います。
ZipEntryが内部に圧縮されるもの。つまり圧縮対象のファイルです。
このZipEntry単位で、ZipOutputStreamのputNextEntry、write、closeEntryを繰り返します。

ZipOutputStream#write付近の処理は、Files.readAllBytes()等を使って、一撃で書いてしまうと楽ではあるんですが、ファイルサイズが大きいとメモリ不足で死にますw
なので、今回は4KB単位に流す感じにしています。

処理の流れは単純で、compressEntryメソッドで再帰的に処理をしています。
フォルダであれば再帰処理。ファイルだったら圧縮です。
というわけで、今回作ったcompressEntryメソッドは、フォルダが渡ってくる前提になっているので、単品のファイル圧縮には対応していませんねぇw