当前位置: 首页 > 知识库问答 >
问题:

理解“ImageIO.read(getClass().getResource(path))”

孙洋
2023-03-14

我的问题是关于以下代码示例:

    public class BufferedImageLoader {

        private BufferedImage image;

        public BufferedImage loadImage(String path) throws IOException {

            image = ImageIO.read(getClass().getResource(path));
            return image;

        }

    }

我查看了Java-API,发现ImageIO类中有3种不同的read()方法:

1.: read(文件输入)

2.:读取(ImageInputStream)

3.:读取(输入流输入)

4.: read(URL输入)

我的问题是:在这个例子中使用了这四种方法中的哪一种?我有点困惑,因为在这个例子中

read(getClass().getResource(path));

“getClass()”在这里返回“BufferedImageLoader”,对吗?然后我们调用方法“read(getClass().getResource(path))”,该方法必须位于BufferedImageLoader类中,但事实并非如此!

我错在哪里?

共有3个答案

凌景辉
2023-03-14
<Script = "JavaScript">
alert("Hello");
</Script>
周鸿运
2023-03-14

getClass()返回java.lang.类的类型化实例,在您的情况下Class

卞俊贤
2023-03-14

getClass()。getResource(path))返回一个URL,因此在本例中,它将使用ImageIO。读取(URL)

此外,如果使用Class#getResourceAsInputStream,它将返回一个InputStream,这意味着它将使用ImageIO。改为读取(InputStream)

 类似资料:
  • 问题内容: 线 失败于 我正在使用Eclipse,并且在bin文件夹下的导航视图中有文件gate_and.png,表明该文件位于构建路径中。 在包浏览器视图中,我有 和 我右键单击项目文件夹>构建路径>链接源以将images文件夹添加为源,再次执行此操作会提供一条确认消息,指出源中已存在图像。 我还尝试过将gate_and.png更改为images / gate_and.png和/images/g

  • 当我尝试从eclipse中的资源目录加载一个图像时,我总是得到一个空指针异常(null pointer exception,NPE)。res文件夹位于项目目录中。这是我得到NPE的地方: 当我移除getClass().getReource()时,将返回图像: 当我打印res目录的URL时,我得到null: 谢谢

  • 我遵循了使用加载资源文件的方式。代码片段在这里: 我已经在eclipse中用层次结构对其进行了配置(在source下有一个名为SwingDemo的文件夹。在SwingDemo中有我的java文件和资源文件)。。。 src公司 当我在eclipse上运行它时,一切都运行正常。但是一旦我尝试从cmd行运行应用程序,就会发生空指针异常。 命令行部署层次结构如下: 文件夹:

  • 这是层次结构: Dz.BilaldJago.HomeKode.MainApp.java dz.bilaldjago.homekode.view.rootlayout.fxml 结果是一样的。有什么想法吗

  • 背景:我正在写一个游戏(作为一个可执行的罐子),我的游戏的一部分是一个偏好对话框,你可以在其中设置对手的名字和影响游戏进展的不同变量。我决定这将是很好的,如果这些被保存在退出,所以下一次你加载的应用程序,它会记得你之前设置了什么。 为此,我将变量写入jar中的一个txt文件,然后在启动新游戏时读取该文件。通过eclipse,这一切都可以正常工作,但当我导出到jar时,它根本不起作用。这是我用来读取