「Java」try-with-resources文のZipFileクラスとBufferedReaderクラスのサンプル
書式
try (ZipFile zf = new ZipFile(zipFileName);
BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)) {
//処理コード
}
説明
ZipファイルzipFileNameにパッケージ化されているファイルの名前を取得し、これらのファイル名を含むテキスト・ファイルを作成します。
Javaコード
package com.example; import java.io.IOException; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.io.BufferedWriter; public class ZipEntryDemo { public static void writeToFileZipFileContents(String zipFileName, String outputFileName) throws java.io.IOException { java.nio.charset.Charset charset = java.nio.charset.StandardCharsets.UTF_8; java.nio.file.Path outputFilePath = java.nio.file.Paths.get(outputFileName); // try-with-resources文でzipファイルを開く、出力ファイルを作成する try (ZipFile zf = new ZipFile(zipFileName); BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)) { // Enumerationでzipファイルの中身要素を列挙する int cnt = 0; for (Enumeration<? extends ZipEntry> entries = zf.entries(); entries.hasMoreElements();) { cnt++; // 圧縮ファイル名を取得し、出力ファイルに書き込む String newLine = System.getProperty("line.separator"); String zipEntryName = ((java.util.zip.ZipEntry) entries.nextElement()).getName() + newLine; System.out.println( "ファイル番号" + cnt + ":" + " ファイル名前:" + zipEntryName + " ファイル名前の長さ:" + zipEntryName.length()); writer.write(zipEntryName, 0, zipEntryName.length()); } } } public static void main(String[] args) { String strZipName = "C:\\data\\test2020.zip"; String strOutputFileName = "C:\\data\\study\\info.txt"; try { writeToFileZipFileContents(strZipName, strOutputFileName); } catch (IOException e) { e.printStackTrace(); } } }
実行結果
ファイル番号1: ファイル名前:test20202.csv
ファイル名前の長さ:15
ファイル番号2: ファイル名前:testinfo.txt
ファイル名前の長さ:14
ファイル番号3: ファイル名前:test_2022oly.doc
ファイル名前の長さ:18
出力ファイルinfo.txtの内容下記
test20202.csv
testinfo.txt
test_2022oly.doc