Java 如何避免从URL.getFile()获取URL编码的路径?
在尝试获取给定资源的路径时,我遇到以下问题:Java 如何避免从URL.getFile()获取URL编码的路径?,java,url-encoding,Java,Url Encoding,在尝试获取给定资源的路径时,我遇到以下问题: System.out.println("nf="+new File(".").getAbsolutePath()); System.out.println("od="+new File(this.getClass().getResource(".").getFile()); 我得到的结果是: nf=C:\Users\current user\workspace\xyz\. od=C:\Users\current%20us
System.out.println("nf="+new File(".").getAbsolutePath());
System.out.println("od="+new File(this.getClass().getResource(".").getFile());
我得到的结果是:
nf=C:\Users\current user\workspace\xyz\.
od=C:\Users\current%20user\workspace\xyz\bin\something
问题在于%20 URL编码的问题。如何避免呢?有没有一种直接的方法可以避免在一开始就获取这种字符串,或者我应该只运行返回的字符串来对URL进行解码
谢谢这是由于API中的URL处理怪癖造成的。您可以通过首先将URL字符串转换为URI来解决此问题:
new URI(this.getClass().getResource(".").toString()).getPath()
这将生成一个字符串,如下所示:
"C:\Users\current user\workspace\xyz\bin\something"
我加上托林克先生的评论作为回答,因为它也有效,至少对我来说似乎更简单
this.getClass().getResource(".").toURI().getPath()
你到底想实现什么?uri.getPath()为我返回了null。uri.getSchemeSpecificPart()完成了这个任务。这个.getClass().getResource(“.”).Tori().getPath()完成了这个任务