Java ImageIO在读取TearArrayInputStream时为空
我有这段代码Java ImageIO在读取TearArrayInputStream时为空,java,image,java-io,Java,Image,Java Io,我有这段代码 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 ("fi
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 -> [B@7a677c
fileData 2 -> java.io.ByteArrayInputStream@203aa8
fileData 3 -> null
为什么BufferedImage
为null并且不会引发异常?说,它可以为null:
返回一个BuffereImage作为解码所提供数据的结果
输入流,图像阅读器自动从中选择
目前已注册。InputStream被包装在一个
ImageInputStream。如果没有注册的ImageReader声称能够
读取结果流,返回null。[……]
库决定传递null而不是引发异常?查看资料来源……阅读ImageIO的文档,我想你可以将ByteArrayInputStream转换为ImageInputStream。ImageIO.read(ImageIO.createImageInputStream(is))
fileData
是非字符串对象,您正在尝试打印它。