• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

使用“ImageIO.write()”API调用我得到空指针异常

java 来源:Nayan Soni 3次浏览

ImageIO.write() API调用时,我得到NullPointerException当我通过一个不存在的路径如"\\abc\abc.png"。我通过不存在的路径特意来测试一些而是获得FileNotFoundException,我得到NPE。这是为什么?使用“ImageIO.write()”API调用我得到空指针异常

ImageIO.write() API应该扔IOException,但不要为什么我得到NPE

我使用异常消息字符串在用户的消息框中显示它,但在这种情况下,NPE.getLocalizedMessage()返回空字符串,因此弹出窗口是空的,只有一个图标。


===========解决方案如下:

正确,虽然。例如,下面的代码:

public static void main(String[] args) throws IOException { 
BufferedImage image = new BufferedImage(32, 32, BufferedImage.TYPE_INT_ARGB); 
File out = new File("\\\\ABC\\abc.png"); 
ImageIO.write(image, "png", out); 
} 

java.io.FileNotFoundException: \\ABC\abc.png (The network path was not found) 
at java.io.RandomAccessFile.open(Native Method) 
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233) 
at javax.imageio.stream.FileImageOutputStream.<init>(FileImageOutputStream.java:69) 
at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(FileImageOutputStreamSpi.java:55) 
at javax.imageio.ImageIO.createImageOutputStream(ImageIO.java:419) 
at javax.imageio.ImageIO.write(ImageIO.java:1530) 
at javaapplication145.JavaApplication145.main(JavaApplication145.java:24) 
Exception in thread "main" java.lang.NullPointerException 
at javax.imageio.ImageIO.write(ImageIO.java:1538) 
at javaapplication145.JavaApplication145.main(JavaApplication145.java:24) 

的原因是FileImageOutputStreamSpi.createOutputStreamInstance燕子FileNotFoundException异常,然后NPE来当ImageIO.write试图关闭流是没开。

为什么异常被抑制,残酷,我不知道。代码片段是

try { 
return new FileImageOutputStream((File)output); 
} catch (Exception e) { 
e.printStackTrace(); 
return null; 
} 

唯一的解决办法是试图使用的ImageIO之前验证路径


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)