株式会社イーヴ

EeBlog(テクニカルブログ)

TOP > EeBlog > 第96回 ZIPファイルの入出力

第96回 ZIPファイルの入出力

引き続き「ZIPファイルの入出力」について見ていきます。

次のサンプルコードは、ZIPファイルを読み込むプログラムです。
エントリはテキストファイルです。

 import java.io.BufferedReader;
 import java.io.FileInputStream;
 import java.io.InputStreamReader;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;


 public class Main {


     public static void main(String[] args) {
         BufferedReader bufferedReader = null;
         try {
             ZipInputStream zipInputStream 
                            = new ZipInputStream(new FileInputStream("input.zip"));
             InputStreamReader inputStreamReader 
                            = new InputStreamReader(zipInputStream, "Shift-JIS");
             bufferedReader = new BufferedReader(inputStreamReader);
             for (ZipEntry zipEntry = zipInputStream.getNextEntry(); 
                  zipEntry != null; zipEntry = zipInputStream.getNextEntry()) {
                 System.out.println(zipEntry.getName());
                 while (bufferedReader.ready()) {
                     System.out.println(bufferedReader.readLine());
                 }
                 System.out.println();
                 zipInputStream.closeEntry();
             }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (bufferedReader != null) {
                 try {
                     bufferedReader.close();
                 } catch (Exception e) {}
             }
         }
     }
 }

ZipInputStreamクラスにはZIP ファイル形式でファイルを読み込む機能があります。
getNextEntryメソッドで順次エントリを取得し、ZipInputStreamから読み込むことで、複数のエントリを読み込み表示しています。

なお、エントリのファイル名は「UTF-8」として扱われます。
ファイル名が日本語のエントリを読もうとすると例外がスローされます。
Javaで作成したZIPファイルを読む場合は問題ありませんが、それ以外のZIPファイルを読むような場合はApache Ant(ant.jar)のorg.apache.tools.zip.ZipFileの使用を検討してください。