为什么java.io.URL剥离出最后一个文件夹?

时间:2012-02-25 00:19:51

标签: java url

我在我的应用程序使用的库中遇到了一个错误。我已经将问题缩小到java.net.URL类的行为以及库如何使用它来查找资源。

当我运行以下代码时,输​​出为file:/root/myfile.xml而不是file:/root/folder/myfile.xml

public static void main(String[] args) throws MalformedURLException {
    String location = "file:///root/folder";
    String spec = "myfile.xml";

    URL context = new URL(location);
    URL url = new URL(context, spec);

    System.out.println(url);
}

如果我向location添加斜杠,我会得到预期的输出。

我很好奇,为什么java.net.URL表现得像这样?

1 个答案:

答案 0 :(得分:3)

来自java.net.url页面:

  

应用程序还可以指定“相对URL”,仅包含   足够的信息来相对于另一个URL访问资源。   相对URL经常在HTML页面中使用。例如,如果   网址的内容:

 http://java.sun.com/index.html   
     

其中包含相对网址:

 FAQ.html   
     

这将是一个简写:

 http://java.sun.com/FAQ.html

因此,通过从/中删除尾随location,您没有指定URL构造函数它是规范的根,而不是要连接的相对路径。< / p>