如何使用类加载器作为文件加载资源?
我想使用类加载器打开文件。但是我总是收到 FileNotFoundException。如何使用 URL 创建新文件?我不想将其作为流打开,就像文件一样。
URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...
I want to open files using the class loader. However I always get a FileNotFoundException. How do I create a new File using the URL? I don't want to open it as a stream just as a file.
URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要将
file://...
URL 转换为java.io.File
,您必须结合使用url.getPath()
> 和url.toURI()
以获得安全的解决方案:完整解释在此 博客文章。
To convert a
file://...
URL tojava.io.File
, you'll have to combine bothurl.getPath()
andurl.toURI()
for a safe solution:Full explanations in this blog post.
我只是在想:如果 foo 在罐子里怎么办?那么你就无法构建一个文件。
如果 foo 确实位于(本地)类路径目录中,那么应该可以使其工作 - 但你知道,如果有人将其打包在 jar 中,或通过网络加载它,它就会失败......
I'm just thinking: What if foo is in a jar? Then you couldn't construct a File.
It should be possible to make it work, if foo is really in a (local) classpath directory - but you know, it will fail, if someone packages it up in a jar, or loads it via the network...