JavaでZIPファイルを圧縮・解凍する方法をサンプルコード付きで解説!
  • facebookページ
  • twitterページ
  • 2021.04.01

    JavaでZIPファイルを圧縮・解凍する方法をサンプルコード付きで解説!

    ZIPファイルとは

    ZIPとは、データ圧縮やアーカイブのフォーマットのことです。

    ZIPは主に、Windowsでよく使用されるフォーマットとなっています。

    ポテパンダの一言メモ

    このZIP形式で圧縮されたファイルをZIPファイルと呼びます。

    JavaのZipOutputStreamクラスについて

    JavaでZIPファイルを圧縮するには、「ZipOutputStreamクラス」を使います。

    ZipOutputStreamクラスは、ファイルをZIPファイル形式で書き込む用の出力ストリーム・フィルタを実装するクラスです。

    また、圧縮データと圧縮解除データの両方をサポートします。

    JavaでZIPファイルに圧縮する方法

    では、Javaで指定フォルダをZIPファイルに圧縮する方法を見ていきましょう。

    サンプルコードは下記の通りです。

    また、フォルダ構成は下記の通りです。

    JavaでZIPファイルに圧縮する方法 フォルダ構成

    Main.javaと同ディレクトリに、ZIPファイルに圧縮したいフォルダ・ファイルを格納します。

    圧縮処理を行っているのは compressFile関数です。

    ZipOutputStreamクラスの putNextEntryメソッド で、新しいZIPファイル・エントリの書込みを開始し、エントリ・データの開始位置にストリームを配置しています。

    圧縮する対象がディレクトリである時は、ディレクトリ名の最後に「/」を追加した値をエントリ名に設定する流れです。

    そして、圧縮するファイルの内容を読み込んだ上で、ZipOutputStreamクラスの writeメソッド で、バイト配列を現在のZIPエントリ・データに書き込みます。

    すべての内容の書き込みが完了したら、読み込み元のストリームを閉じ、ZipOutputStreamクラスの closeEntryメソッド で現在のZIPエントリを閉じます。

    この処理を、ZIPファイルとして圧縮するファイルの数だけ繰り返します。

    ポテパンダの一言メモ

    上記のプログラムを実行すると、同ディレクトリに CompressedFile.zip が作成でき、ファイル・フォルダの圧縮ができているはずです。

    複数ファイルをZIP圧縮するには?

    今回の例で言うと、複数のファイルを圧縮する場合は targetFile を追加すればOKです。

    こちらもサンプルコードと結果を紹介します。

    ■フォルダ構成

    複数ファイルをZIP圧縮するフォルダ構成

    ■実行結果

    複数ファイルをZIP圧縮したフォルダ構成

    実行結果のように、2つのフォルダ・ファイルが CompressedFile.zip として圧縮できました。

    JavaでZIPファイルを解凍する方法

    次に、JavaでZIPファイルを解凍する方法を紹介します。

    サンプルコードは下記の通りです。

    また、フォルダの構成は下記のようになっています。

    ■フォルダ構成

    JavaでZIPファイルを解凍する方法 フォルダ構成

    この状態でプログラムを実行すると、下記のように中身のフォルダ・ファイルが解凍されるはずです。

    ■実行結果

    JavaでZIPファイルを解凍した フォルダ構成



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE