[英]getResourceAsStream(String) with full path returns null but file exists
好吧,我真的很茫然。 我尝试一些JOGL,并希望在Object上获得纹理。 我通常这样做:
Texture[] thumbs = new Texture[pics.length];
try {
for (int i = 0; i < thumbs.length; i ++){
InputStream stream = getClass().getResourceAsStream(pics[i].getPath());
data = TextureIO.newTextureData(stream, false, "jpg");
thumbs[i] = TextureIO.newTexture(data);
}
} catch (IOException e) {
e.printStackTrace();
}
通常,如果jpg文件位于源目录中,则此方法可以正常工作,但这次文件位于其他位置,并且我收到一个IOException
,该IOException
表示流为null
。
pics[i].getPath()
返回以下字符串: C:\\beispieluser\\bjoern\\eigene_bilder\\eckelsheim.jpg
。 这是文件所在的确切路径。 有人可以告诉我我的想法错了吗?
getResourceAsStream()
和朋友只会打开“类路径资源”,它们是与已编译类一起出现在类路径上的文件。 要打开该文件,请使用new File()
或(在Java 7上) Files.newInputStream()
。
getResourceAsStream()查找类路径中的资源。 我很确定它不能在磁盘上其他位置的绝对路径下工作。
码:
try{
for (int i = 0; i < thumbs.length; i ++){
File file = new File(pics[i].getPath());
FileInputStream stream = new FileInputStream(file);
data = TextureIO.newTextureData(stream, false, "jpg");
thumbs[i] = TextureIO.newTexture(data);
}
} catch (IOException e) {
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.