ImageIO.createImageInputStream返回null,为什么呢?

Dan*_*ana 4 java javax.imageio

这曾经可以工作,现在不起作用。我没有更改图像应该流的部分,所以我不知道为什么它不起作用。这是我的代码片段:

File f = new File(filepath);
applicantImage=new ImageDetail(filepath);

Iterator<ImageReader> readers =
     ImageIO.getImageReadersBySuffix(applicantImage.getFile_extension());
ImageReader reader = readers.next();

ImageInputStream iis = ImageIO.createImageInputStream(f);
Run Code Online (Sandbox Code Playgroud)

filepath是映像的绝对文件路径,并且已确认该映像位于服务器上的该位置。一切顺利进行,直到一切顺利ImageIO.createImageInputStream(f)。现在回来null了。我读了它在文件中的javadoc。那么,为什么现在返回一个null?有人知道吗 上面发布的所有代码在我的编辑中均未更改,因此我不明白为什么更改之前有效,为什么现在不起作用。任何帮助深表感谢!谢谢!

tra*_*god 5

尝试使用带有的InputStream构造File

ImageIO.createImageInputStream(new FileInputStream(f));
Run Code Online (Sandbox Code Playgroud)

这是一个相关的例子

附录:仔细看ImageIO.createImageInputStream()确实表示File允许a。确实,您的原始代码可以在我的平台(Mac OS X)上运行,这使我推测null结果可能是平台的ImageInputStreamSpi实现所特有的。对于一个不存在的File f

ImageIO.createImageInputStream(f);
Run Code Online (Sandbox Code Playgroud)

我得到一个合理的例外:

线程“主”中的异常java.lang.IllegalStateException:输入未设置!
    在com.sun.imageio.plugins.gif.GIFImageReader.read(GIFImageReader.java:784)
    在javax.imageio.ImageReader.read(ImageReader.java:923)
    在cli.GifBounds.search(GifBounds.java:22)
    在cli.GifBounds.main(GifBounds.java:14)

  • +1-如果`f`不存在或无法读取,那么您应该得到一个例外。(没有任何“返回null并且不告诉应用程序为什么”这样的废话。) (3认同)