如何构建Path一个jar:fileURL?
调用Paths.get(new URI("jar:file:/C:/foo.jar!/bar.html"))引发FileSystemNotFoundException(注意文件系统丢失,而不是文件本身)。
据我所知,两个文件都存在。有任何想法吗?
Paths尝试解决FileSystem包含您的的Path。(实际上,这可能是实现细节。规范只是声明它将检查默认值FileSystem。)如果您尚未注册/创建这样的FileSystem,它将无法找到它。
您可以FileSystem从jar文件中创建一个新文件,然后Path通过该文件访问该条目FileSystem。
Path path = Paths.get("C:/foo.jar");
URI uri = new URI("jar", path.toUri().toString(), null);
Map<String, String> env = new HashMap<>();
env.put("create", "true");
FileSystem fileSystem = FileSystems.newFileSystem(uri, env);
Path file = fileSystem.getPath("bar.html");
System.out.println(file);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用
Paths.get(new URI("jar:file:/C:/foo.jar!/bar.html"))
Run Code Online (Sandbox Code Playgroud)
FileSystem完成使用时,请小心正确关闭。
有关ZipFileSystemProvider的更多信息,请参见此处。
| 归档时间: |
|
| 查看次数: |
4310 次 |
| 最近记录: |