Java:从 FilePath 获取 URI
我对Java知之甚少。我需要在 Windows 上从 FilePath(String)
构造 URI 的字符串表示形式。有时我得到的 inputFilePath
是:file:/C:/a.txt
,有时是:C:/a.txt
。现在,我正在做的是:
new File(inputFilePath).toURI().toURL().toExternalForm()
上面的方法适用于不以 file:/
为前缀的路径,但对于以 file:/
为前缀的路径, .toURI
方法通过附加当前目录的值将其转换为无效的 URI,因此路径变得无效。
请帮助我建议一种正确的方法来获取这两种路径的正确 URI。
I've little knowledge of Java. I need to construct a string representation of an URI from FilePath(String)
on windows. Sometimes the inputFilePath
I get is: file:/C:/a.txt
and sometimes it is: C:/a.txt
. Right now, what I'm doing is:
new File(inputFilePath).toURI().toURL().toExternalForm()
The above works fine for paths, which are not prefixed with file:/
, but for paths prefixed with file:/
, the .toURI
method is converting it to a invalid URI, by appending value of current dir, and hence the path becomes invalid.
Please help me out by suggesting a correct way to get the proper URI for both kind of paths.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这些是有效的文件 uri:
因此您需要删除
file:/
或file:///
(Windows)和file://
对于Linux。These are the valid file uri:
So you will need to remove
file:/
orfile:///
for Windows andfile://
for Linux.只需使用
Normalize();
示例:
这一行将标准化所有路径。
Just use
Normalize();
Example:
this one line will normalize all your paths.
来自 https://jaxp.java.net 的 SAXLocalNameCount.java:
From SAXLocalNameCount.java from https://jaxp.java.net:
new File(String)
的参数是路径,而不是 URI。因此,您帖子中“但是”之后的部分是对 API 的无效使用。The argument to
new File(String)
is a path, not a URI. The part of your post after 'but' is therefore an invalid use of the API.给出输出:
Gives output: