我在使用java代码加载图片时遇到问题。我将图像,i.png放在与此代码所在类相同的包中。这是代码。
Image img;
try
{
img = ImageIO.read(new File("i.png"));
}
catch(IOException e)
{
}
当我执行此代码时,它会抛出IOException并说它无法读取输入文件
有人会知道它为什么会抛出这个例外
对不起,措辞不好
我的意思是代码抛出一个异常然后你明显不能在代码中使用它(这就是我得到的熬夜到11:30)
谢谢你的帮助!
答案 0 :(得分:2)
在代码中硬编码路径或将资源保留在同一个包中只是为了方便访问,这是一种不好的做法。 您可以提供硬编码路径或使用getResourceAsStream
getResourceAsStream的文档说
查找具有给定名称的资源。资源是一些数据(图像,音频,文本等),可以通过类代码以独立于代码位置的方式访问。
这就是你想要的代码。
阅读this回答,以便更清楚地了解访问资源的文件方式与访问资源的类加载器方式。
因此,通过一些修改,您的代码在更改时会起作用 -
public class TestIt {
public static void main(String[] args) throws IOException {
Image img = null;
img = ImageIO.read(TestIt.class.getResourceAsStream( "i.png" ));
img.getGraphics();
System.out.println(img);
}
}
注意使用getResourceAsStream方法。
HTH
答案 1 :(得分:0)
您正在获取空指针异常,因为 img 变量在执行后保持为null img = ImageIO.read(新文件(“i.png”))。因为它保持为null,所以在尝试在代码中进一步使用时会出现空指针异常。
以下是您的解决方案:
BufferedImage img = ImageIO.read(new File("i.png"));
此致 拉维