gpt4 book ai didi

java - IOException : StreamClosed Without Apparent Cause

转载 作者:行者123 更新时间:2023-12-02 03:51:55 27 4
gpt4 key购买 nike

我已经用 Java 创建了一个程序,我想将其打包到可执行 jar 文件中。我希望这个程序从 jar 文件中获取图像并显示它们。我创建了一个抽象类,其中包含一个获取字符串文件名并返回图像对象的方法。但是,当我尝试运行此方法时,它失败并产生“IOException:流已关闭”错误。

我找不到任何有关流关闭原因的信息。据我所知,我的程序中没有任何其他输入流。在新的 main 中使用该方法,除了 JFrame 设置之外什么都没有,仍然会产生相同的错误。

我是仅通过图像文件的名称(即“example.png”)来调用图像文件,还是使用其相对路径(即“/src/icons/example.png”),或者使用其绝对路径(即“C:/Users/My_Name/Desktop/EXAMPLE/src/icons/example.png") 我收到相同的流关闭错误。

public static Image importImage(String fileName) throws IOException {
Image img = null;

byte[] data = new byte[10000];

BufferedInputStream bis = new BufferedInputStream( Thread.currentThread().getClass().getResourceAsStream(fileName));

int byteRead = bis.read(data, 0, 10000);

img = Toolkit.getDefaultToolkit().createImage(data);

return img;
}

我希望程序接受相关图像文件的名称,并返回一个 Image 对象。图像文件位于项目的类路径上,并且应该可见。

最佳答案

好的。事实证明,这样的方法有两个要求:一是必须调用“thisClassName.class.getResourceAsStream(fileName)”。正是这样。您还需要让您的文件名以“/”开头,否则它将完全不起作用。但是,只要您正在寻找的资源包含在程序的类路径中,它应该从那里开始工作。

关于java - IOException : StreamClosed Without Apparent Cause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com