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

