2013-04-09 100 views
1

我正在嘗試使用ImageIO類來保存圖像,然後使用輸入流獲取資源。我的問題是,每當我嘗試創建輸入流時,我都會收到NullPointerException。如果我只是在類路徑中放置一個圖像文件,它就可以工作。這裏是我的代碼:Java ImageIO.write到類路徑?

ImageIO.write(image, "png", new File("temp.png")); 
InputStream imgIs = AptCap.class.getResourceAsStream("temp.png"); 
byte[] imgData = new byte[imgIs.available()]; // I get null here. 

我也曾嘗試直接指定地點到C盤爲他們兩個上的文件,但我仍然得到一個空指針異常。我寧願不這樣做,但只是保留在類路徑中(爲了多操作系統支持的目的)。

+2

更改'new File(「temp.png」)''到'theByteArayOutputStream'並完全避免本地磁盤。 – 2013-04-09 00:12:50

+0

@AndrewThompson什麼是「theByteArayOutputStream」。我需要定義或導入的變量...或者是什麼。 – user1947236 2013-04-09 00:14:43

+0

或者,將'AptCap.class.getResourceAsStream(「temp.png」);'改成'new FileInputStream(「temp.png」);''。但我會推薦第一種方法。 – 2013-04-09 00:15:12

回答

0
ByteArrayOutputStream baos = new ByteArrayOutputStream(); // create OutputStream 
ImageIO.write(image, "png", baos); // write to OS 
InputStream imgIs = new ByteArrayInputStream(baos.toByteArray()); // grab bytes from OS 
//..