Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免从URL.getFile()获取URL编码的路径?_Java_Url Encoding - Fatal编程技术网

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()完成了这个任务