我正在用Java构建一个文件浏览器,我在JTrees中列出了文件/文件夹.我现在要做的是当我到达一个压缩文件夹时,我想列出其内容,但不首先提取它.
如果有人有想法,请分享.
aio*_*obe 17
我建议你看看ZipFile.entries().
这是一些代码:
try (ZipFile zipFile = new ZipFile("test.zip")) {
Enumeration zipEntries = zipFile.entries();
while (zipEntries.hasMoreElements()) {
String fileName = ((ZipEntry) zipEntries.nextElement()).getName();
System.out.println(fileName);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Java 8,则可以避免使用几乎弃用的Enumeration类ZipFile::stream,如下所示:
zipFile.stream()
.map(ZipEntry::getName)
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
如果您需要知道条目是否是目录,您可以使用ZipEntry.isDirectory.除了没有提取文件之外,您无法获得更多信息(出于显而易见的原因).
如果要避免提取所有文件,可以使用ZipFile.getInputStream每个文件一次提取一个文件ZipEntry.(请注意,您不需要将解压缩的数据存储在磁盘上,您可以只读取输入流并丢弃字节.
使用java.util.zip.ZipFile类,特别是它的entries方法.
你会有这样的事情:
ZipFile zipFile = new ZipFile("testfile.zip");
Enumeration zipEntries = zipFile.entries();
String fname;
while (zipEntries.hasMoreElements()) {
fname = ((ZipEntry)zipEntries.nextElement()).getName();
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17818 次 |
| 最近记录: |