gpt4 book ai didi

java - 切断相对于另一个的 URI

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:23 25 4
gpt4 key购买 nike

我们有 resolvea/b + c/d 转换为 a/b/c/d.

我们有 relativizea/b + a/b/c/d 转换为 c/d.

有没有办法将a/b/c/d + c/d转换为a/b


对于我的特殊问题(类路径),URI 无法转换为 java.nio.file.Path,出现错误

java.nio.file.InvalidPathException: Illegal char <:> at index 3: jar:file:/D:/devel/somejar.jar!/foo/Bar.class

我想解析一个条目的目录(例如给定的 Bar.class)和 getClassLoader().getResource() 产生的 URI .toURI()jar:file:/D:/devel/somejar.jar!/foo

最佳答案

您可以使用 java.nio.file.Path 但您必须使用自定义文件系统,因为此处的 URI 方案是 jar 而不是 文件This page显示了一个例子。

URI uri = URI.create("jar:file:/D:/devel/somejar.jar!/foo/Bar.class");

String[] array = uri.toString().split("!");
String jarFile = array[0];
String entryPath = array[1];
try(FileSystem fs = FileSystems.newFileSystem(URI.create(jarFile), new HashMap<>())) {
Path path = fs.getPath(entryPath);
URI parentUri = path.getParent().toUri();
...
}

或者使用子字符串的简单方法:

URI uri = URI.create("jar:file:/D:/devel/somejar.jar!/foo/Bar.class");
URI parent = URI.create(uri.toString().substring(0, uri.toString().lastIndexOf("/")));

关于java - 切断相对于另一个的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com