Java でファイル エクスプローラーを構築しており、JTree でファイル/フォルダーを一覧表示しています。私が今やろうとしているのは、圧縮されたフォルダーにたどり着いたときに、その内容を一覧表示したいのですが、最初に解凍しません。
誰かがアイデアを持っている場合は、共有してください。
をご覧になることをお勧めします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);
}
}
Java 8を使用している場合は、次のように使用して、ほとんど非推奨のEnumeration
クラスの使用を避けることができZipFile::stream
ます。
zipFile.stream()
.map(ZipEntry::getName)
.forEach(System.out::println);
エントリがディレクトリかどうかを知る必要がある場合は、 を使用できますZipEntry.isDirectory
。ファイルを抽出しない場合よりも多くの情報を取得することはできません (明らかな理由により)。
すべてのファイルを抽出したくない場合は、 ZipFile.getInputStream
for eachを使用して一度に 1 つのファイルを抽出できます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();
...
}