Java:从 FilePath 获取 URI

2022-09-02 10:02:30

我对Java知之甚少。我需要从窗口构造URI的字符串表示形式。有时我得到的是:有时它是:。现在,我正在做的是:FilePath(String)inputFilePathfile:/C:/a.txtC:/a.txt

new File(inputFilePath).toURI().toURL().toExternalForm()

上述方法适用于不以 为前缀的路径,但对于以 为 前缀的路径,则为 .方法通过附加当前 dir 的值将其转换为无效的 URI,因此路径变得无效。file:/file:/toURI

请帮助我,建议一种正确的方法来为这两种路径获取正确的URI。


答案 1

这些是有效的文件 uri:

file:/C:/a.txt            <- On Windows
file:///C:/a.txt          <- On Windows
file:///home/user/a.txt   <- On Linux

因此,您需要删除或用于Windows和Linux。file:/file:///file://


答案 2

只需使用Normalize();

例:

path = Paths.get("/", input).normalize();

这一行将规范化您的所有路径。