首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.lang.Class.getResources的使用

java.lang.Class.getResources的使用
EN

Stack Overflow用户
提问于 2011-11-22 12:35:29
回答 3查看 4.8K关注 0票数 2

今天我在SO上看到了一些关于使用java.lang.Class.getResources()java.lang.Class.getResourcesAsStream()的帖子。不知何故,我还是有些困惑。

我有一个Jar文件,其中包含这个结构(resources/test.xml)

这个jar文件位于我的应用程序的类路径上,当我调用下面的代码段时,它返回null,即mappingURL的值为null。

代码语言:javascript
运行
复制
 URL mappingURL = this.getClass().getResource("/resources/test.xml");

但是,当我在类路径上以松散格式存储XML文件时,即通过创建目录“mapping.xml”并将资源存储在其中,它可以工作。

稍后我将使用这个URL来读取"test.xml“文件的内容。

这是否意味着,getResources()不是从Jar中读取文件的合适方法?我不明白为什么当Jar文件中存在文件(test.xml)时,mappingURL是空的?

EN

回答 3

Stack Overflow用户

发布于 2011-11-22 12:45:36

如果找不到资源,getResource()方法将返回null。您为资源添加了一个/前缀,这意味着它正在尝试在文件夹中查找。您应该能够删除前导/并达到预期效果。

以下是文档中的getResource()方法描述:

查找具有给定名称的资源。资源是可以由类代码以独立于代码位置的方式访问的一些数据(图像、音频、文本等)。

资源的名称是以“/”分隔的路径名,用于标识资源。

此方法将首先在父类加载器中搜索资源;如果父类加载器为空,则搜索内置到虚拟机的类加载器的路径。如果失败,此方法将调用findResource(String)来查找资源。

票数 4
EN

Stack Overflow用户

发布于 2011-11-22 12:45:45

代码语言:javascript
运行
复制
this.getClass().getResource("/resources/test.xml");

如果您要开始的类文件也在同一个JAR文件中,那么这应该是可行的。

票数 1
EN

Stack Overflow用户

发布于 2011-11-22 12:56:14

这是否意味着,getResources()不是从

中读取文件的合适方法?

这是正确的。如果您的资源将被捆绑到jar中,那么您总是希望使用getResourceAsStream()

只需一行代码,您就可以开始读取该文件:

代码语言:javascript
运行
复制
BufferedReader reader = new BufferReader(InputStreamReader(getResourceAsStream("/test.xml")));

reader.readLine();
//...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8222023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档