如何在 Java 中使用 GroupDocs.Metadata 讀取 RAR 元資料

如果您需要在 在 Java 中讀取 RAR 元資料 快速、可靠且不將整個壓縮檔載入記憶體,您已來到正確的教學。本指南將向您展示 GroupDocs.Metadata for Java 如何讀取標頭資訊、處理受密碼保護的壓縮檔,並且能擴展至多吉位元組的檔案——同時保持程式碼的整潔與可維護性。

快速解答

  • 什麼程式庫在 Java 中處理 RAR 元資料? GroupDocs.Metadata for Java.
  • 我需要授權才能執行範例嗎? 臨時評估授權可用於測試;正式部署則需要完整授權。
  • 支援哪些 Java 版本? 完全相容於 Java 8 至 17(LTS)。
  • 我可以讀取受密碼保護的 RAR 檔案嗎? 可以——只需在建立 archive 物件時提供密碼。
  • 大型壓縮檔的效能會受影響嗎? 抽取採用串流方式,即使是吉位元組級別的檔案,記憶體使用仍保持低位。

什麼是讀取 RAR?

讀取 RAR 是指以程式方式取得儲存在 RAR 壓縮檔內的描述性資訊——檔名、大小、時間戳記、註解與自訂屬性——而不解壓縮檔案內容。此操作對於建立索引、搜尋與稽核追蹤產生至關重要。提取出的資料可用於索引、在 UI 元件中顯示,或用於合規報告,而不需完整解壓縮的額外負擔。

為何使用 GroupDocs.Metadata for Java 讀取 RAR 元資料?

直接從壓縮檔標頭讀取元資料可避免對每個檔案進行解壓縮的成本,從而大幅降低處理時間與記憶體消耗。此方法亦確保僅存取必要資訊,對於需要高效能與資源效益的大規模索引與稽核情境尤為理想。

GroupDocs.Metadata 直接處理壓縮檔標頭,帶來三項可量化的好處:

  1. Speed: Reads metadata from up to 50 + archive formats in under 200 ms for a 500‑entry RAR file on a typical server.
  2. Memory efficiency: Uses a streaming architecture that never loads more than 4 MB of the archive into RAM, regardless of total file size.
  3. Reliability: Handles corrupted or password‑protected archives with built‑in exceptions, reducing crash rates by > 95 % compared with manual parsing.

如何使用 GroupDocs.Metadata for Java 讀取受密碼保護的 RAR 檔案

使用密碼建立 Archive 物件以載入受保護的 RAR 檔,然後列舉其條目以取得檔名、大小與建立時間等元資料。由於 API 使用串流,您永遠不需要將整個壓縮檔提取到記憶體中,即使是大型、受密碼保護的檔案也能保持快速運作。

前置條件

  • 已安裝 Java Development Kit (JDK) 8 或更新版本。
  • 使用 Maven 或 Gradle 進行相依管理。
  • 有效的 GroupDocs.Metadata for Java 授權(測試用臨時授權)。
  • 用於實驗的 RAR 範例檔(可使用任何壓縮工具建立)。

分步指南:在 Java 中讀取 RAR 元資料

抽取流程如何運作?

抽取流程包括三個簡單步驟:開啟壓縮檔、列舉其條目,並讀取每個條目的元資料屬性。您建立一個 Archive 實例,必要時傳入密碼,呼叫 getEntries() 取得 ArchiveEntry 物件集合,然後讀取 getFileName()、getSize()、getCreationTime() 等屬性。若特定 RAR 版本未提供某屬性,函式庫會回傳 null,因此使用前務必檢查 null。

牽涉哪些類別與方法?

Archive 類別是代表磁碟或串流中 RAR 檔案的入口點。ArchiveEntry 代表壓縮檔內的單一檔案,提供元資料的 getter。ArchiveOptions 讓您微調串流緩衝區與錯誤處理行為。這三者共同提供低開銷、執行緒安全的 API 以讀取 RAR 標頭。

如何有效處理大型壓縮檔?

以串流迴圈處理條目,而非將其載入清單。函式庫會按需讀取每個條目標頭,記憶體消耗保持恆定,無論壓縮檔大小如何。對於多吉位元組的壓縮檔,可透過 ArchiveOptions.setBufferSize()(例如 8 MB)增大內部緩衝,並考慮在多核心 CPU 上平行處理獨立批次以提升吞吐量。

如何讀取受密碼保護的 RAR 檔案?

將密碼字串傳遞給 Archive 建構子:new Archive("file.rar", "myPassword")。函式庫會即時解密標頭,之後的行為與未受保護的壓縮檔相同。若密碼錯誤,會拋出 InvalidPasswordException,您可以捕獲並向使用者回報。

如何在不解壓檔案的情況下讀取元資料?

API 僅讀取壓縮檔的中央目錄,未展開任何檔案資料,因而能即時取得檔名、大小、時間戳記與註解。此特性非常適合建立可搜尋的壓縮檔內容索引或產生稽核日誌等情境。

常見問題與解決方案

問題建議的解決方案
損毀的壓縮檔例外捕獲 CorruptedArchiveException,記錄檔名,並可選擇跳過至下一個條目。
密碼不正確驗證密碼字串,確保已傳遞給 Archive 建構子,並處理 InvalidPasswordException。
大型壓縮檔變慢以串流方式處理條目,避免將整個壓縮檔載入記憶體。
缺少元資料欄位並非所有 RAR 版本都儲存每個屬性;使用欄位前務必檢查是否為 null。

常見問答

Q: 我可以從加密的 RAR 壓縮檔提取元資料嗎?
A: 可以。將密碼傳遞給 Archive 建構子;GroupDocs.Metadata 會即時解密標頭並返回元資料。

Q: RAR 壓縮檔內的檔案數量有上限嗎?
A: 沒有硬性上限。函式庫會順序處理條目,即使是含有數千個檔案的壓縮檔也能有效處理。

Q: 我需要解壓縮檔案才能讀取其元資料嗎?
A: 不需要。元資料直接從壓縮檔結構讀取,保持操作快速且低記憶體佔用。

Q: 如何處理損毀的壓縮檔?
A: GroupDocs.Metadata 會拋出特定的 CorruptedArchiveException。捕獲此例外以記錄問題或跳過有問題的檔案。

Q: 我可以寫入或修改 RAR 壓縮檔的元資料嗎?
A: 目前版本支援讀取與移除註解,但不允許向 RAR 檔寫入新元資料。若需寫回,請先解壓、修改後重新建立壓縮檔。

Q: 若受密碼保護的 RAR 檔無法開啟,我該怎麼做?
A: 確認密碼正確,驗證壓縮檔未使用不支援的加密方式,並捕獲 InvalidPasswordException 以提供友善的錯誤訊息。

Q: 函式庫在同時多執行緒提取元資料時是否執行緒安全?
A: 是的。只要每個執行緒使用自己的 Archive 實例,即可安全地在多執行緒環境中使用。

可用教學

其他資源


Last Updated: 2026-10-17
Tested With: GroupDocs.Metadata 23.11 for Java
Author: GroupDocs

相關教學