1

私は 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 エンコード パスをファイル ハンドルで機能するものに変換するのに非常に苦労しています。これは非常に疑わしい回避策のように見えますが、この種のトリックを行います。

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に変換する安全な方法はありますか?

4

0 に答える 0