是一个' res'加载图像时,Java中仍然需要类文件夹?

时间:2018-03-11 21:53:53

标签: java

我正在制作游戏,我偶然发现了一些将图像加载到我的程序中的方法。有两种常见的方式:

  • 第一个(不需要类文件夹):

    ImageIcon ii = new ImageIcon(" image.png"); Image i = ii.getImage();

使用此方法时,您只需将文件夹添加到项目文件夹(在Eclipse中),不要必须使其成为外部类文件夹。

  • 第二个选项(需要类文件夹):

    图片i = ImageIO。读取(ImageLoader。 .getResource(" image.png"));

如果您创建了资源文件夹(通常称为' res')并将其作为外部类文件夹添加到项目中,则只能以这种方式加载图像。

我的问题是为什么你会使用第二个选项而不是第一个?从我有限的经验来看,似乎第一个选项与第二个选项的工作原理相同,只需将您将其添加到外部类文件夹中的文件夹即可。

2 个答案:

答案 0 :(得分:0)

如果将应用程序打包为jar,则第一个选项不起作用。第二种选择适用于两种情况,作为ide中的分解应用程序或打包在jar文件中的

答案 1 :(得分:0)

new ImageIcon("image.png");假设图像存储在文件系统上(在您的情况下,在当前工作目录中),这会引发一些问题 - 因为工作目录并不总是与罐子存放。

ImageIO.read(ImageLoader.class.getResource("image.png"))将图像嵌入到Jar文件中,该文件解决了与第一种方法相关的问题,因为图像是Jar文件所在的位置。

它还简化了安装,因为您只需要跟踪jar文件而不是所有其他的"外部"文件。

ImageIcon没有报告失败的原因。它将图像加载到一个单独的线程中,这使得诊断问题变得困难。

ImageIO将图像加载到当前线程中(并返回完全实现的图像),但如果图像因某种原因无法加载,也会生成IOException,这样可以更好地加载图像一般的图像。它还支持(或有能力支持)更广泛的图像。

通常,使用ImageIO和嵌入式图像更简单,更易于使用,通常是固定资源的推荐方法