我已经创建了可执行的jar文件(使用Eclipse),在jar中包含一组图像(.png)文件。因此,我在项目中的/images文件夹中添加了带有所有图像的源文件夹。代码必须访问这些文件才能使用ImageIO.read(new File(path);创建BufferedImage

早一点
要获取路径,我使用了ClassName.class.getResource(/image/test.png).toURI();
在执行jar时,它抛出错误URI不是分层的

所以现在我正在使用ClassName.class.getResourceAsStream(/image/test.png);
但是如何使ImageIO从Inputstream读取呢?
我试过如下

InputStreamReader resourceBuff=ClassName.class.getResourceAsStream(/image/test.png);
ImageIO.read((ImageInputStream) new InputStreamReader(resourceBuff));

它引发错误InputStreamReader无法转换为ImageInputStream

最佳答案

ImageIO.read() InputStream作为参数,因此没有将其强制转换为ImageInputStream的含义。

其次,您不能将InputStreamReader对象强制转换为 ImageInputStream ,因为ImageInputStream与您想到的InputStreamReader无关。

而且 getResourceAsStream() 返回InputStream。因此,您可以像这样直接进行操作。

InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);
BufferedImage bf = ImageIO.read(resourceBuff);

10-07 15:33