如何使用类加载器作为文件加载资源?

发布于 2024-08-30 12:47:56 字数 185 浏览 8 评论 0原文

我想使用类加载器打开文件。但是我总是收到 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甚是思念 2024-09-06 12:47:56

要将 file://... URL 转换为 java.io.File,您必须结合使用 url.getPath() > 和 url.toURI() 以获得安全的解决方案:

File f;
try {
    f = new File(url.toURI());
} catch(URISyntaxException e) {
    f = new File(url.getPath());
}

完整解释在此 博客文章

To convert a file://... URL to java.io.File, you'll have to combine both url.getPath() and url.toURI() for a safe solution:

File f;
try {
    f = new File(url.toURI());
} catch(URISyntaxException e) {
    f = new File(url.getPath());
}

Full explanations in this blog post.

久伴你 2024-09-06 12:47:56

我只是在想:如果 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...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文