【问题标题】:how to get URL using relative path如何使用相对路径获取 URL
【发布时间】:2010-09-08 07:27:15
【问题描述】:

我有一个网址:

URL url=new URL("http://www.abc.com/aa/bb/cc/file.html");

和一个相对路径:

String relativePath="../file2.html"; //maybe is "/file3.html"

我想使用变量urlrelativePath 获得http://www.abc.com/aa/bb/file2.html

怎么做?

【问题讨论】:

    标签: java


    【解决方案1】:
    new URL(url, relativePath);
    

    【讨论】:

    【解决方案2】:

    尝试使用 URI 而不是 URL 类进行操作。

    从您的 URL 获取 URI:

    java.net.URI anURI=url.toUri();
    

    然后,解析相对URI:

    URI resultURI=anURI.resolve(relativePath);
    

    最后,要获得一个 URL 类型,使用 URI 结果变量的 de 方法 toUrl(),你就搞定了。

    【讨论】:

    • 为什么使用 URI 比使用 URL 更好?
    【解决方案3】:

    如果你想构建一个指向相对文件的 URL,你可以使用:

    URL url = new URL(new URL("file:"), "./myLocalFile.txt");
    

    【讨论】:

      【解决方案4】:

      在构建相对 URL 时,请记住基础是当前包的路径,而不是文件。我的意思是:引用文件在.../myProject/src/pckg/javafile.java,被引用文件在.../myProject/some-other/nice.file,那么相对引用应该是这样的:

      URL url = new URL(new URL("file:"), "./../some-other/nice.file");
      

      这也适用于我:

      URL url = new URL("file:./../some-other/nice.file");
      

      【讨论】:

      • 我不确定人们是否注意到第二种形式是最有趣的。无需拆分协议和其余部分
      【解决方案5】:

      我发现有效的是:

      new URL("file:./src/gui/Something.fxml")
      

      【讨论】:

        【解决方案6】:

        这适用于我的代码
        URL url=Myclass.class.getResource("/com/fnf/si/DepAcctInq_V02.wsdl");

        【讨论】:

          猜你喜欢
          • 2014-06-03
          • 1970-01-01
          • 1970-01-01
          • 2011-05-29
          • 2010-09-21
          • 2020-07-20
          • 1970-01-01
          • 1970-01-01
          • 2011-07-28
          相关资源
          最近更新 更多