【发布时间】:2019-11-25 18:21:10
【问题描述】:
这是我的第一篇文章。如果我犯了一个明显的错误,请原谅。
BufferedImage img = null;
File file = new File("com/game/assets/badlogic.jpg");
try {
img = ImageIO.read(file);
} catch (IOException e) {
e.printStackTrace();
}
这是我的代码,由于某种原因它无法读取我的图像输入文件。 这是错误信息:
javax.imageio.IIOException: Can't read input file!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308)
at com.engine.Main.run(Main.java:41)
at java.base/java.lang.Thread.run(Thread.java:844)
at com.engine.Main.start(Main.java:32)
at com.game.GameManager.main(GameManager.java:51)
我不知道我做错了什么。无论如何,谢谢你,善良的陌生人。
我让它工作了!
BufferedImage img = null;
try {
img = ImageIO.read(new FileInputStream("/Users/earmalys/Desktop/InteliJ projects/mantengine/src/com/game/assets/badlogic.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
但是文件路径非常准确。无论如何我可以解决这个问题吗?
【问题讨论】:
-
尝试给出绝对路径。我认为这是将文件移动到资源并使用此链接mkyong.com/java/java-read-a-file-from-resources-folder 告诉您如何从资源文件夹中读取的问题。
-
我会同意您拥有的文件引用不正确的假设。如果该位置没有文件,则尝试制作一个并查看它的输出位置。还要检查本地参考的绝对路径,它可能与您的预期不同。一般来说,出于这个原因,我不喜欢绝对路径,如果我需要相对路径,我会在自己的某个地方明确指定基本路径,而不是 exec 路径。
-
您的路径
"com/game/assets/badlogic.jpg"表示一个资源。不应通过典型的文件 API(例如File)访问资源。使用专门提供的 API 来访问资源,例如Class#getResource(String)。然后尝试使用ImageIO#read(URL)。 -
修改我之前的评论,我不喜欢 relative 路径。我确实更喜欢绝对的。
标签: java image bufferedimage ioexception