List .zip directories without extracting
java, zip
Solution
I suggest you have a look at `ZipFile.entries()`.
Here's some code:
try (ZipFile zipFile = new ZipFile("test.zip")) {
Enumeration<? extends ZipEntry> zipEntries = zipFile.entries();
while (zipEntries.hasMoreElements()) {
String fileName = zipEntries.nextElement().getName();
System.out.println(fileName);
}
}
If you're using Java 8, you can avoid the use of the almost deprecated `Enumeration` class using `ZipFile::stream` as follows:
zipFile.stream()
.map(ZipEntry::getName)
.forEach(System.out::println);
If you need to know whether an entry is a directory or not, you could use `ZipEntry.isDirectory`. You can't get much more information than that without extracting the file (for obvious reasons).
If you want to avoid extracting all files, you can extract one file at a time using `ZipFile.getInputStream` for each `ZipEntry`. (Note that you don't need to store the unpacked data on disk, you can just read the input stream and discard the bytes as you go.
Problem
I am building a file explorer in Java and I am listing the files/folders in JTrees. What I am trying to do now is when I get to a zipped folder I want to list its contents, but without extracting it first. If anyone has an idea, please share.