有没有简单的方法将包含双字节字符的URL转换为绝对路径?
我问的原因是我想找到这样的资源:
URL url=getClass().getResources("/getresources/test.txt");
String path=url.toString();
File f=new File(path);
Run Code Online (Sandbox Code Playgroud)
程序找不到该文件.我知道我可以转换的所有空间的路径都包含'%20',但我真正的问题是我使用的是日语操作系统,当程序jar文件在日文文本的目录中时(例如デスクトップ)我得到的URL - 对目录名称进行编码,如下所示:
%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97
我想我可以得到UTF-8字节代码并将其转换为正确的字符来查找文件,但我想知道是否有更简单的方法来执行此操作.任何帮助将不胜感激.
NT
Noe*_*Ang 40
URL url=getClass().getResource("/getresources/test.txt");
File f=new File(url.toURI());
Run Code Online (Sandbox Code Playgroud)
Min*_*ang 11
如果您有兴趣Path从 URL获取,您可以执行以下操作:
Path p = Paths.get(url.toURI());
Run Code Online (Sandbox Code Playgroud)
Filejava.net.URI在这种情况下,有一个构造函数接受类型的参数:
File f = new File(url.toURI());
Run Code Online (Sandbox Code Playgroud)
对于使用 Java 11 或更高版本的用户来说,还有另一个选择:
Path path = Path.of(url.toURI());
Run Code Online (Sandbox Code Playgroud)
或作为字符串:
String path = Path.of(url.toURI()).toString();
Run Code Online (Sandbox Code Playgroud)
URISyntaxException如果保证 URL 是文件 URL,上面的两种方法都会抛出一个可以安全忽略的异常。