2013-04-13 89 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")); 

問候, 拉維