如何在Java中“合并”两个URI?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

这是服务器的绝对URI:

URI base = new URI("http://localhost/root?a=1");

这是一个相对URI:

URI rel = new URI("/child?b=5");

现在我试图将相对的一个应用于绝对,并接收:

URI combined = base + rel; // somehow
assert combined.equals(new URI("http://localhost/root/child?a=1&b=5"));

是否有可能使用JDK或某个库进行这样的操作?

提问于
用户回答回答于
URL mergedURL = new URL(new URL(baseUrl), relativeUrl);

要将基础url的参数传递给合并的url,您必须通过调用URL#getQuery手动解压缩它们并将它们附加到新的URL

就像是,

String finalUrl = mergedUrl.toString() + "&" + baseUrl.getQuery();

这将需要一个if()来决定是否需要'&'来加入它们,具体取决于mergedUrl的外观。

用户回答回答于

URI(和文件也)有一个接受现有URI(或文件)的构造函数。 它是MADE的相对URI的: URL mergedURL = new URL(baseUrl, relativeUrl); 要合并两个文件路径,你可以使用: File mergedFile = new File(directoryFile, fileOrDir); 如果你使用mergedFile.getName()你的文件名,如果它不是一个目录。

扫码关注云+社区