Java 将URL转换为绝对路径
有没有简单的方法将包含两个字节字符的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=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不是分层的”