Java-在图像中读取(IIOException:Can';t创建ImageInputStream)

Java-在图像中读取(IIOException:Can';t创建ImageInputStream),java,inputstream,javax.imageio,Java,Inputstream,Javax.imageio,我正在使用数据驱动设计编写一个简单的游戏,在这个设计中,我读取了游戏中各种元素的图像。因此,我编写了一个解析器来读取文件,确认它们是可接受的图像格式,并使用这些文件创建一个新的Sprite(我编写的类) 我使用ImageIO.read()读入文件,如下面的示例所示 toAdd = new Sprite(ImageIO.read(targetFile)); 异常的堆栈跟踪如下所示: javax.imageio.IIOException: Can't create an ImageInputStr

我正在使用数据驱动设计编写一个简单的游戏,在这个设计中,我读取了游戏中各种元素的图像。因此,我编写了一个解析器来读取文件,确认它们是可接受的图像格式,并使用这些文件创建一个新的Sprite(我编写的类)

我使用ImageIO.read()读入文件,如下面的示例所示

toAdd = new Sprite(ImageIO.read(targetFile));
异常的堆栈跟踪如下所示:

javax.imageio.IIOException: Can't create an ImageInputStream!
    at javax.imageio.ImageIO.read(ImageIO.java:1280)
    at edu.moravian.utilities.dataParsers.GraphicsDataParser.readInSprites(GraphicsDataParser.java:53)
我不知道这是什么原因。应用程序不是多线程的,映像位于正确的目录中,并且已确认存在,并且我拥有访问映像所需的权限


我可能遗漏了什么?

一个可能的原因可能是您正在阅读使用CMYK颜色模型的jpeg。默认情况下,ImageIO不支持这些功能


不过,有可能添加该函数。例如,看看这个答案:

您是否尝试过使用常规输入流打开文件?它存在吗?我在代码中添加了一个检查来确认文件存在。您建议如何使用常规输入流打开图像?简单使用ImageIO.read()的主要吸引力在于我不必直接使用输入流。事实上,这是我的选择。位ImageIO是非常高级的(您的错误消息也是如此),因此查看更简单的InputStream可能会为您提供出错的线索。在这种情况下,我可能只是尝试打开文件并遍历内容,看看是否有任何问题(磁盘I/O、权限等)。另一件事是使用一个静态资源,你知道它会工作,并从那里得到它。很抱歉,我不能给出更多的提示-我从来没有遇到过这种故障。但是如果没有任何帮助,也许您可以添加一些代码来解释它是如何崩溃的以及在哪里崩溃的?例如,targetFile看起来像什么?我觉得很傻。我没有直接传递所需的文件,而是尝试了一种惰性的解决方案:我将其包装为FileInputStream,并在其位置传递该文件,然后它就可以全面运行良好的绿色测试。谢谢你的建议。不知道根本原因是什么有点令人沮丧,但我很高兴代码至少正在运行。