'。'后URI.getPath()不返回任何内容

时间:2013-04-30 12:45:48

标签: java uri

我有一个像这样的路径的URI:

ftp://test:test@someftp/ready123/users/abc/#0#.

但是URI上的方法getPath()会返回:

/ready123/users/abc/. 

我需要像这样返回整个路径:

/ready123/users/abc/#0#

...这样我就可以将工作目录(CWD)更改为#0#文件夹。代码是一个通用的方法,并且被许多其他应用程序使用。因此,当我做出改变时,我必须非常小心。我相信#之后的所有内容都被视为片段,但在这种情况下,它实际上是文件夹的名称。

如何从URI对象获取路径/ready123/users/abc/#0#

2 个答案:

答案 0 :(得分:1)

来自URI类的JavaDoc:

  

URI语法和组件最高级别的URI引用   字符串形式的(以下简称“URI”)具有语法

[scheme:]scheme-specific-part[#fragment] 
     

其中方括号[...]描绘了可选组件和   人物:和#代表自己。

因此,如果您想在第一个#之后检索所有内容,则需要使用URI.getFragment()

答案 1 :(得分:0)

您需要使用%23

替换哈希字符
 URI uir = new URI("ftp://test:test@someftp/ready123/users/abc/%230%23");
 System.out.println(uir.getPath()); // returns '/ready123/users/abc/#0#'