我想得到一个文件的绝对路径,这样我就可以进一步使用它来定位这个文件。我是这样做的:
File file = new File(Swagger2MarkupConverterTest.class.getResource(
"/json/swagger.json").getFile());
String tempPath = file.getAbsolutePath();
String path = tempPath.replace("\\", "\\\\");
路径irl如下所示:
C:\\Users\\Michał Szydłowski\\workspace2\\swagger2markup\\bin\\json\\swagger.json
但是,由于它包含波兰语字符和空格,因此我从getAbsolutPath
得到的结果是:
C:\\Users\\Micha%c5%82%20Szyd%c5%82owski\\workspace2\\swagger2markup\\bin\\json\\swagger.json
我怎样才能让它以正确的方式来做呢?这是有问题的,因为使用这个路径,它无法找到文件(说它不存在)。
4条答案
按热度按时间iugsix8n1#
您正在使用的
URL.getFile
调用返回根据URL编码规则编码的URL的文件部分。在将字符串提供给File
之前,您需要使用URLDecoder
对该字符串进行解码:从Java 7开始,您可以使用
StandardCharsets.UTF_8
kulphzqa2#
最简单的方法,不涉及解码任何东西,是这样的:
现在,文件在类路径中的物理位置并不重要,只要资源实际上是一个文件而不是JAR条目,就可以找到它。
xdyibdwo3#
可以使用
URI
对路径进行编码,并通过URI
打开File
。7eumitmz4#
您可以简单地使用
在读取文件时给予字符集。