2017-01-16 52 views
0

我有这样一段代码ImageIO的是空阅读ByteArrayInputStream的

System.out.println ("fileData 1 -> " + fileData); 

ByteArrayInputStream in = new ByteArrayInputStream(fileData); 

System.out.println ("fileData 2 -> " + in); 

try { 
    BufferedImage img = ImageIO.read(in); 
    System.out.println ("fileData 3 -> " + img); 

.... 

,这就是我在控制台中看到:

fileData 1 -> [[email protected] 
fileData 2 -> [email protected] 
fileData 3 -> null 

怎么说,BufferedImage为空,并且不抛出异常?

+0

库决定提供null而不是抛出异常?看看源代码.... –

+0

阅读ImageIO的文档,我猜你可以将你的ByteArrayInputStream转换为ImageInputStream。 ImageIO.read(ImageIO.createImageInputStream(是)); –

+0

'fileData'是非字符串对象,您正在尝试打印它。 –

回答

0

documentation说,它可以是空:

返回一个BufferedImage作为解码所提供的InputStream 与来自当前已注册 中自动选择一个ImageReader的结果。 InputStream封装在一个 ImageInputStream中。如果没有注册的ImageReader声称可以通过 读取结果流,则返回null。 [...]