[英]RandomAccessFile from ZipEntry (java)
我正在尋找有關通過 RandomAccessFile 讀取 zip 檔案的內容。 所以,我找到了這個例子: http ://www.java2s.com/Code/JavaAPI/java.io/RandomAccessFilereadLine.htm 但是它對我不起作用,它告訴我沒有這樣的文件或目錄,但是文件-路徑是正確的。 這個例子不正確嗎?
更新:來自 docs.oracle.com:
RandomAccessFile(String name, String mode)
創建一個隨機訪問文件流以從具有指定名稱的文件中讀取,並可選擇寫入。
奇怪的是,他們在此示例中嘗試使用 entryName 作為“名稱”參數來創建 RAF
還有一個相同的例子: http ://www.java-tips.org/java-se-tips/java.util.zip/how-to-read-files-within-a-zip-file-3 .html
我認為在這種情況下,未經審查的代碼會出現在 Internet 上並導致無窮無盡的問題。
這兩個示例中的代碼不可能做任何有用的事情。 如果 zip 文件的內容已經被提取到包含 zip 的文件夾中,則代碼可以執行任何操作的唯一方法。
總之:您不能將 RAF 與 ZipEntry 一起使用,因為 ZipEntry 指的是加密流。 您不能對流進行隨機訪問(除非您緩沖整個內容)。
這對我來說真的很有趣:
a) java-tips 文章中的代碼沒有遵循正確的 Java 命名約定 b) 兩篇文章中的代碼驚人地相似
使用 NIO.2 文件 API (Java 7),處理 zip 文件變得更加容易。
嘗試(未經測試):
try (FileSystem zipFS = FileSystems.newFileSystem(URI.create("jar:" + zipURI), Map.of())) {
Path targetInZipPath = zipFS.getPath(targetInZipPathString);
// do something here
}
在此處閱讀有關 ZIP 文件系統(JDK 模塊 jdk.zipfs)的更多信息: https ://docs.oracle.com/en/java/javase/17/docs/api/jdk.zipfs/module-summary.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.