爲了保持對zip文件的引用而不必保持zip文件的打開狀態,我希望將URI保存到zip文件的條目中。如果路徑中包含空格,則Zip中的文件的URI不正確
因此,我使用zip文件系統打開zip文件並將條目的路徑導出爲URI。
Path zipfile = ...
URI uriOfFileInZip;
try(FileSystem fs = FileSystems.newFileSystem(zipfile, null)){
Path fileInZip = fs.getPath("fileInZip.txt");
uriOfFileInZip = fileInZip.toUri();
}
現在我想再次讀取文件,所以我嘗試打開文件流。
這隻要工作作爲ZIP文件不包含任何空格的路徑。只要它包含空格,我得到這樣
java.io.FileNotFoundException: D:\example\name%20of%20zipfile.zip (The system cannot find the file specified)
的URI的錯誤在zip文件是
jar:file:///D:/example/name%2520of%2520zipfile.zip!/fileInZip.txt
拉鍊的名稱是
D:\example\name of zipfile.zip
我想知道%2520
這似乎是URL編碼的問題,但不應該透明地處理這個問題嗎?或者它是一個錯誤?
任何想法來解決這個問題?
這是相關的,但似乎是另一個問題。我使用空格的路徑創建zipfs,而當我使用Java 8時,這篇文章中提到的bug已修復。如果這是一個錯誤,任何解決方法的想法? –