第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の使用を検討してください。