这是我的代码:
BufferedImage downArrow;
BufferedImage downLeftArrow;
BufferedImage downRightArrow;
BufferedImage leftArrow;
BufferedImage rightArrow;
BufferedImage upArrow;
BufferedImage upLeftArrow;
BufferedImage upRightArrow;
public DirectionPanel()
{
try{
downArrow = ImageIO.read(new File(("images/downArrow.png")));
downLeftArrow = ImageIO.read(new File(("images/downLeftArrow.png")));
downRightArrow = ImageIO.read(new File(("images/downRight.png")));
leftArrow = ImageIO.read(new File(("images/leftArrow.png")));
rightArrow = ImageIO.read(new File(("images/rightArrow.png")));
upArrow = ImageIO.read(new File(("images/upArrow.png")));
upLeftArrow = ImageIO.read(new File(("images/upLeftArrow.png")));
upRightArrow = ImageIO.read(new File(("images/upRightArrow.png")));
}catch(IOException whoops){
System.out.println(whoops);
}
}
它在编译器中有效,但是当我尝试运行它时,它会说" javax.imageio.IIOException:无法读取输入文件!"
这是我的文件系统:
Project
|
|____src
|
|____MapData
|
|____file
|
|____images
|
|____downArrow.png
|
|____downLeftArrow.png
|
|____etc.
出了什么问题?我试图按照以前的答案解决这个问题,这就是我的所在。
答案 0 :(得分:0)
我建议将您的图像放在资源文件夹中(如果您使用的是IDE)。
然后像这样使用ImageIO:
BufferedImage img = ImageIO.read(DirectoryPanel.class.getClassLoader().getResourceAsStream("images/downArrow.png"));
然后他从中读取图像的路径为<resources-root>/images/downArrow.png
。否则,文件路径相对于执行目录所在的位置。