Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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转换为绝对路径_Java_Url_File Io - Fatal编程技术网

Java 将URL转换为绝对路径

Java 将URL转换为绝对路径,java,url,file-io,Java,Url,File Io,有没有简单的方法将包含两个字节字符的URL转换为绝对路径 我问这个问题的原因是我正在努力寻找这样的资源: URL url=getClass().getResources("/getresources/test.txt"); String path=url.toString(); File f=new File(path); 程序找不到该文件。我知道对于我可以转换的所有空间,路径都包含“%20”,但我真正的问题是我使用的是日文操作系统,并且程序jar文件位于包含日文文本的目录中(例如デスクトップ

有没有简单的方法将包含两个字节字符的URL转换为绝对路径

我问这个问题的原因是我正在努力寻找这样的资源:

URL url=getClass().getResources("/getresources/test.txt");
String path=url.toString();
File f=new File(path);
程序找不到该文件。我知道对于我可以转换的所有空间,路径都包含“%20”,但我真正的问题是我使用的是日文操作系统,并且程序jar文件位于包含日文文本的目录中(例如デスクトップ) 我得到了目录名的名称, 像这样:

URL url=getClass().getResources("/getresources/test.txt");
String path=url.toString();
File f=new File(path);
%e3%83%87%e3%82%b9%e3%82%af%e3%83%88%e3%83%83%e3%83%83%83%e3%83%97

我想我可以得到UTF-8字节码,并将其转换成合适的字符来查找文件,但我想知道是否有更简单的方法来完成这项工作。任何帮助都将不胜感激


nt

文件
有一个构造函数,在这种情况下,该构造函数采用的参数类型为
java.net.URI

File f = new File(url.toURI());

如果您对从URL获取感兴趣,可以执行以下操作:

Path p = Paths.get(url.toURI());

那不是“垃圾”这些是字符的转义表示。它们是合法值。代码片段不起作用的原因是Class.getResources和File具有不同的根空间。是否有类可用于将路径转换为普通可读字符?我尝试过这个方法。当我在Netbeans中运行程序时,它可以工作,但当生成时它可以工作不起作用。我得到的错误是:java.lang.IllegalArgumentException:URI不是层次结构。可能是您将应用程序与
.jar
-文件中的资源捆绑在一起?您无法从该
URI
创建
文件
对象,因为该资源不是一个文件,而是
.jar
中的一个条目。啊,我明白了。所以由于我将它捆绑在一个.jar文件中,这里有什么解决方案吗?没有。您必须通过调用
url.openStream()
或直接通过
getClass().getResourceAsStream(“resource.txt”)通过
InputStream
读取资源
。如果你需要知道你的
.jar
在磁盘上的位置,你可以检查返回的
URL
,但是你不能创建一个
文件
,引用
.jar
.thx中的资源,正如我在下面所说的,这只在netbeans中起作用。当我编译应用程序时,我遇到了一个错误。Moritz得到了它。一个文件对象不能使用存档资源的URL进行实例化。您必须对其进行流式处理。出现异常“URI不是分层的”