是否有一个API来获取类路径资源(例如我得到的Class.getResource(String))作为一个java.nio.file.Path?理想情况下,我想使用奇特的新Path API和类路径资源.
我收到一个找到本地文件的URL(我收到的URL不在我的控制范围内).URL按RFC2396中的定义进行有效转义.如何将其转换为Java File对象?
有趣的是,URL getFile()方法返回一个String,而不是File.
我已经创建了一个名为"/ tmp/some dir"的目录(在"some"和"dir"之间有一个间距字符),它通过以下URL正确定位:"file:/// tmp/some%20dir" (为清楚起见,添加了引号).
如何将该URL转换为Java文件?
要提供有关我的问题的更多详细信息,以下打印为false:
URL url = new URL( "file:///tmp/some%20dir" );
File f = new File( url.getFile() );
System.out.println( "Does dir exist? " + f.exists() );
Run Code Online (Sandbox Code Playgroud)
而以下(用空格手动替换"%20")打印为true:
URL url = new URL( "file:///tmp/some%20dir" );
File f = new File( url.getFile().replaceAll( "%20", " " ) );
System.out.println( "Does dir exist? " + f.exists() );
Run Code Online (Sandbox Code Playgroud)
请注意,我不是在问为什么第一个示例打印为false,为什么使用我的hacky replaceAll的第二个示例打印为true,我问如何将转义的URL转换为Java File对象.
编辑:谢谢大家,这几乎是一个骗局但不完全.
愚蠢的是我在URL类本身中寻找一个帮助方法.
以下按预期从Java URL获取Java文件:
URL url = new URL( "file:///home/nonet/some%20dir" ); …Run Code Online (Sandbox Code Playgroud)