是否有一种方法可以接受以下路径并返回适当的URI:
test.xml // File in CWD
./test.xml // The same
../test.xml // File in parent directory
/etc/test.xml // Absolute path
file:///etc/test.xml // Full URL
http://example.com/test.xml // URL for http
目前我所能想到的只是解析为url(URL.create),如果失败则尝试将其解析为File / Path。
答案 0 :(得分:1)
使用URI,而不是网址。
这可能是您实际想要的,也可能不是,但取决于您需要对结果做什么。
答案 1 :(得分:1)
您可以为您指定的每个资源创建一个URI,如下所示:
public class T {
public static void main(final String[] args) throws URISyntaxException {
System.out.println(new URI("test.xml"));
System.out.println(new URI("./test.xml"));
System.out.println(new URI("../test.xml"));
System.out.println(new URI("/etc/test.xml"));
System.out.println(new URI("file:///etc/test.xml"));
System.out.println(new URI("http://example.com/test.xml"));
}
}
此外,您可以使用方法“toURL()”检索URL,但这只是在URI的情况下是绝对的。
答案 2 :(得分:1)
如果要在URI
构造函数中使用这些File
,则需要为相对路径指定基础URI
。您可以使用URI.resolve完成此操作。
URI basePath = new URI("file:///base_dir/");
URI uri = basePath.resolve("foo.txt");
System.out.println(new File(uri));