2013-04-13 119 views
2

我无法使用Java代码加载图片。我在与代码所在的类相同的包中有image,i.png。这是代码。ImageIO未加载图片

Image img; 
    try 
    { 
     img = ImageIO.read(new File("i.png")); 
    } 
    catch(IOException e) 
    { 
    } 

当我执行这个代码,它抛出IOException,并说,它无法读取输入文件。
有人会知道它为什么会抛出异常 对不起的措辞 什么我是代码抛出异常,然后你明显不能在代码中使用它(这就是我得到的直到11: 30)
感谢您的帮助!

+1

是否抛出异常? – jhbruhn

+0

你可以在你尝试使用图像的地方显示一段代码吗? –

+0

也许e.printStackTrace()将有助于catch子句... – keuleJ

回答

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

0

因为你IMG变量保持执行 IMG = ImageIO.read(新文件( “i.png”))后空你得到空指针异常。因为它保持为空,所以在尝试在代码中进一步使用它时,您会收到空指针异常。

这里是您的解决方案:

BufferedImage img = ImageIO.read(new File("i.png")); 

问候, 拉维