读取 zip 存档中的文本文件

2022-09-01 22:47:56

我有zip存档,其中包含一堆纯文本文件。我想解析每个文本文件数据。以下是我到目前为止所写的内容:

try {
    final ZipFile zipFile = new ZipFile(chooser.getSelectedFile());
    final Enumeration<? extends ZipEntry> entries = zipFile.entries();
    ZipInputStream zipInput = null;

    while (entries.hasMoreElements()) {
        final ZipEntry zipEntry = entries.nextElement();
        if (!zipEntry.isDirectory()) {
            final String fileName = zipEntry.getName();
            if (fileName.endsWith(".txt")) {
                zipInput = new ZipInputStream(new FileInputStream(fileName));
                final RandomAccessFile rf = new RandomAccessFile(fileName, "r");
                String line;
                while((line = rf.readLine()) != null) {
                    System.out.println(line);
                }
                rf.close();
                zipInput.closeEntry();
            }
        }
    }
    zipFile.close();
}
catch (final IOException ioe) {
    System.err.println("Unhandled exception:");
    ioe.printStackTrace();
    return;
}

我是否需要 RandomAccessFile 来执行此操作?我在拥有ZipInputStream的地方迷路了。


答案 1

不,您不需要 .首先获取此 zip 文件条目的数据:RandomAccessFileInputStream

InputStream input = zipFile.getInputStream(entry);

然后将其包装在一个(从二进制解码为文本)和一个(一次读取一行):InputStreamReaderBufferedReader

BufferedReader br = new BufferedReader(new InputStreamReader(input, "UTF-8"));

然后像往常一样从中读取行。像往常一样将所有适当的位包装在块中,以关闭所有资源。try/finally


答案 2

推荐