我正在建立一個Java文件瀏覽器,我列出了JTrees中的文件/文件夾。我現在想要做的是當我到達一個壓縮文件夾時,我想列出它的內容,但是沒有先提取它。列表.zip目錄沒有解壓
如果有人有想法,請分享。
我正在建立一個Java文件瀏覽器,我列出了JTrees中的文件/文件夾。我現在想要做的是當我到達一個壓縮文件夾時,我想列出它的內容,但是沒有先提取它。列表.zip目錄沒有解壓
如果有人有想法,請分享。
我建議你看看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,你能避免使用使用ZipFile::stream
幾乎棄用Enumeration
類如下:
zipFile.stream()
.map(ZipEntry::getName)
.forEach(System.out::println);
如果您需要知道某個條目是否爲目錄,則可以使用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();
...
}
我已經嘗試過這一點,但我必須知道它是什麼類型的文件,這將幾乎給我的文件/文件夾的名稱,我必須知道它是一個文件,一個文件夾等。 – 2012-07-13 10:07:03
既然java 7,我會說通過'FileSystem','Path'和'Files'使用NIO是一個更容易(和統一的方式)或解決這個問題。請參閱:http://stackoverflow.com/a/37413531/80779和http://stackoverflow.com/a/37413128/80779 – LordOfThePigs 2016-05-24 12:29:25