У нас есть resolve
, который преобразует a/b
+ c/d
в a/b/c/d
.Отрежьте URI по отношению к другому
У нас есть relativize
который преобразует a/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
) и URI
при условии, что getClassLoader().getResource().toURI()
- jar:file:/D:/devel/somejar.jar!/foo
.
Этот подход требует, чтобы classloader возвращал путь 'jar:'. Любой способ сделать первую часть ('toString.split()') более общей? – WorldSEnder
Каковы возможные типы URI, которые могут быть возвращены загрузчиком классов? Если ресурс всегда находится в файловой системе, то есть в файле класса или внутри Jar, тогда 'java.nio.file.Path' и' java.io.File' должно быть более чем достаточно для получения родительских путей. – manouti
Я не совсем уверен, что все в файловой системе, но когда вы так выразились, я думаю, этого достаточно. Я еще не соглашусь с ответом, так как более общий вопрос не был удовлетворительным, хотя (когда 'c' является полным путем, я сделаю это более понятным) – WorldSEnder