在Java中接受文件路径和URL

时间:2011-10-23 13:54:47

标签: java url uri

是否有一种方法可以接受以下路径并返回适当的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。

3 个答案:

答案 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));