Java URL类有时会删除';文件';协议

Java URL类有时会删除';文件';协议,java,url,constructor,Java,Url,Constructor,给定以下代码: class testurl { public void test() { try { URL url1 = new URL("file:../../foo/bar/"); URL url2 = new URL(url1, "file.txt"); URL url3 = new URL("file:../../../../foo/bar/"); URL

给定以下代码:

class testurl
{
    public void test()
    {
        try {
            URL url1 = new URL("file:../../foo/bar/");
            URL url2 = new URL(url1, "file.txt");

            URL url3 = new URL("file:../../../../foo/bar/");
            URL url4 = new URL(url3, "file.txt");

            URL url5 = new URL("file:../../../../../foo/bar/");
            URL url6 = new URL(url5, "file.txt");

            System.out.println("url1: " + url1.toString());
            System.out.println("url2: " + url2.toString());
            System.out.println("url3: " + url3.toString());
            System.out.println("url4: " + url4.toString());
            System.out.println("url5: " + url5.toString());
            System.out.println("url6: " + url6.toString());
        }
        catch (MalformedURLException ex) {
            System.out.println("MalformedURLException Exception:");
            System.out.println(ex);
        }
    }

    public static void main(String[] args)
    {
        testurl obj = new testurl();
        obj.test();
    }
}
我看到以下输出:

url1: file:../../foo/bar/
url2: file:../../foo/bar/file.txt
url3: file:../../../../foo/bar/
url4: file:../../foo/bar/file.txt
url5: file:../../../../../foo/bar/
url6: file:../foo/bar/file.txt
每当我使用“文件”协议在URL对象的路径中移动两(2)个以上的“../”相对目录时,URL类就会删除部分路径

URL(URL, String)
构造函数,部分路径在构造过程中被移除。我尝试在URL中的file:之后使用“//”,但没有任何区别

我做错什么了吗?或者这只是按照设计工作? 如果是这样,是否可以在URL的文件部分追加/替换一个URL 没有先使用getPath或getFile解构它 URL对象的方法

这不是我使用的构造函数的设计目的吗

我已经检查了Java跟踪: 上面写着:

You can create URL objects for these pages relative to their common base
URL:http://example.com/pages/ like this:

URL myURL = new URL("http://example.com/pages/");
URL page1URL = new URL(myURL, "page1.html");
URL page2URL = new URL(myURL, "page2.html");

因此,看来我正在按预期使用它。

我认为不允许您尝试从另一个相对URL创建URL。您必须从绝对路径URL执行此操作。我不知道为什么它的行为会如此…(对我和你都一样)。