我使用一种简单的方法来获取项目的资源。我正在使用Eclipse,而且我有一个' res'用于保存所需文件的文件夹。这是我加载东西的方式,例如' puppy.png'就在我的res文件夹中(没有子文件夹):
String path = "/puppy.png";
try {
BufferedImage image = ImageIO.read(getClass().getResourceAsStream(path));
} catch(Exception ex) { ex.printStackTrace(); }
有时候我得到一个输入== null错误,有些人没有!不像这次加载puppy.png,但下次它不会赢。对于某些类,它总是正确加载,而对于其他类,我总是会收到此错误。任何人都可以解释为什么会发生这种情况,我该如何修复它,但仍然使用getResourceAsStream()方法?
答案 0 :(得分:1)
请查看How to retrieve image from project folder?。
我没有提到从不同路径读取图像的方法。
你可以尝试任何一个
// Read from same package
ImageIO.read(getClass().getResourceAsStream("c.png"));
// Read from absolute path
ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.png"));
// Read from images folder parallel to src in your project
ImageIO.read(new File("images\\c.jpg"));
在您的情况下,图片必须位于同一个包中,而不是前缀/
。
答案 1 :(得分:0)
请注意,如果资源返回null(意味着它不存在),您将收到此错误。
检查返回的输入如下:
String path = "/puppy.png";
try {
InputStream is = getClass().getResourceAsStream(path);
if (is == null) {
//resource doesn't exist
} else {
BufferedImage image = ImageIO.read(is);
}
} catch(Exception ex) { ex.printStackTrace(); }
请注意,您很可能应该使用String path = "puppy.png"
,因为您已经在项目文件夹的内容中。