Java文件访问 - URI疯狂

时间:2013-04-08 15:41:01

标签: java url uri filepath

我正在使用IBM OmniFind,它有一种处理文件路径的有趣方式。如果你有这样的道路:

C:\temp\some §$% path\temp - Sho rtcut.lnk

它变成了这种“URI”(他们称之为......):

file:///C:/temp/some+%C2%A7%24%25+path/temp+-+Sho+rtcut.lnk

这显然似乎是通过URLEncoder.encode转义的。通常,Java会从上面的路径构建这种URI:

file:/C:/temp/some%20%C2%A7$%25%20path/temp%20-%20Sho%20rtcut.lnk
file:/C:/temp/some%20§$%25%20path/temp%20-%20Sho%20rtcut.lnk

现在我很难将这种URL编码路径转换为适用于File句柄的东西。虽然看起来这是一个非常值得怀疑的解决方法,但这种方法很有用:

String path = "file:///C:/temp/some+%C2%A7%24%25+path/temp+-+Sho+rtcut.lnk";
URL url = new URL(path);
path = url.toExternalForm().replaceAll("[+]", "%20");

URI uri = new URI(path);
File file = new File(uri);
System.out.println(file.exists());

是否有任何安全的方法将URL转义文件路径转换为Java中的有效URI?

0 个答案:

没有答案