【发布时间】:2018-05-01 14:48:00
【问题描述】:
我正在尝试动态读取存储在 .tgz 目录中的一组 .xml 文档。 .tgz 文件的结构是包含子目录 A1、A2 等的*文件夹 01,在每个 Ax 目录中都有一组我希望阅读的 .xml 文档。例如。 01/A1/1234.xml
到目前为止,我可以解压缩 .tgz 文件夹并显示底层的*文件夹,但当它应该包含多个子目录时,它被认为是空的或不被识别为文件夹,每个子目录中都有一组 .xml 文档。
if (filename.endsWith(".tgz")) {
TarArchiveInputStream tarInput = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream(filename)));
TarArchiveEntry currentEntry = tarInput.getNextTarEntry();
for(File F : currentEntry.getFile().listFiles())
System.out.println(F.getName());
}
运行此块时,操作文件夹时会引发空指针异常。如果我运行currentEntry.isDirectory(),它会返回 true。如果我改为运行:
if (filename.endsWith(".tgz")) {
TarArchiveInputStream tarInput = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream(filename)));
TarArchiveEntry currentEntry = tarInput.getNextTarEntry();
System.out.println(currentEntry.getDirectoryEntries().length);
for(TarArchiveEntry F : currentEntry.getDirectoryEntries())
System.out.println(F.getName());
}
System.out.println(currentEntry.getDirectoryEntries().length); 行打印 0 而它应该是 100。当使用任一方法循环通过 currentEntry 中的文件时,什么都找不到。
是否可以在不完全解压缩、操作文件然后手动删除文件的情况下读取该 .tgz 文件夹中的文件?
【问题讨论】:
标签: java gzip tar apache-commons compression