如何使用 Java 讀取 Zip 文件條目
瀏覽人數:467最近更新:
1. 概述
Zip 文件廣泛用於將多個文件壓縮和歸檔到一個文件中。以編程方式從 zip 文件中提取和處理單個條目在各種情況下都很有價值。
在這個簡短的教程中,我們將探討如何使用 Java 讀取 zip 文件條目。
2. 解決方案
我們可以使用java.util.zip
包中的**ZipFile
和ZipEntry
類輕鬆讀取 zip 文件的條目**:
String zipFilePath = "path/to/our/zip/file.zip";
try (ZipFile zipFile = new ZipFile(zipFilePath)) {
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
// Check if entry is a directory
if (!entry.isDirectory()) {
try (InputStream inputStream = zipFile.getInputStream(entry)) {
// Read and process the entry contents using the inputStream
}
}
}
}
我們來詳細了解一下步驟:
- 首先,我們可以創建一個代表 zip 文件的
ZipFile
對象。該對象將提供對文件內條目的訪問。 - 一旦我們有了
ZipFile
對象,我們就可以使用entries()
方法迭代它的條目。每個條目代表一個文件或目錄。 - 對於每個條目,我們可以訪問各種屬性,例如名稱、大小、修改時間等。讓我們使用
isDirectory()
方法來檢查它是否是一個目錄。 - 要讀取特定條目的內容,我們可以使用
getInputStream()
方法返回的InputStream
。這允許我們訪問條目數據的字節。 - 最後,讓我們使用 try-with-resources,這樣我們就不必擔心手動關閉
ZipFile
和InputStream
。
3. 示例
讓我們使用具有以下結構的 zip 文件來測試我們的解決方案:
fileA.txt
folder1/
folder1/fileB.txt
讓我們更改上面的代碼以讀取 zip 文件中文本文件的內容:
try (InputStream inputStream = zipFile.getInputStream(entry);
Scanner scanner = new Scanner(inputStream);) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line);
}
}
輸出將如下所示:
this is the content in fileA
this is the content in fileB
4。結論
在本教程中,我們學習瞭如何使用 Java 讀取 zip 文件條目。
本文中的示例代碼可以在 GitHub 上找到。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議