「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