2017-01-16 144 views
1

对于名称为“资源”的文件夹而不是其他名称,有什么魔力。我在'资源'中有一个文件,当我尝试加载它时,它工作正常。Java资源文件夹名称与某些其他名称

ClassLoader loader=Thread.currentThread().getContextClassLoader(); 
InputStream propFile=loader.getResourceAsStream("KCBSEvents/resource/build.properties"); 

我做一个prop.load(propFile)来加载属性。

当我尝试使用类似的逻辑从名为'Images'的目录加载图像时,它失败。这两个目录在我的树中都处于同一级别。

ClassLoader loader=Thread.currentThread().getContextClassLoader(); 
java.net.URL logoURL=loader.getClass().getResource("KCBSEvents/Images/KCBSLogo.jpg"); 

结果是'logoURL'为空。我只能得出结论,或者有关于目录名称'resource'或'getResource'的一些魔术与'getResourceAsStream'不同。有人可以解释发生了什么吗? TIA。

+0

那么,获取资源作为流返回一个流,但可能相关:http://stackoverflow.com/questions/6608795/what-is-the-difference-between-class-getresource-and-classloader-getresource –

+1

也许你应该把图像文件夹放在资源文件夹中? –

+0

你想要什么,一个URL或? –

回答

0

如果有人遇到这个问题,我终于搞明白了。我需要使用字节流作为徽标。

ClassLoader loader=Thread.currentThread().getContextClassLoader(); 
logo = new JLabel(new ImageIcon(ImageIO.read(loader.getResourceAsStream("KCBSEvents/Images/KCBSLogo.jpg")))); 

它与jpg文件所在的文件夹无关。