为了保持对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已修复。如果这是一个错误,任何解决方法的想法? –