gpt4 book ai didi

java - 使用 (getClass().getResourceAsStream ("Path/to/pic")) 与 ("Path/to/pic") 的新图像实例

转载 作者:行者123 更新时间:2023-11-30 10:08:37 24 4
gpt4 key购买 nike

当我在学习 javafx 教程并尝试为 ImageView 创建一个新的 Image 实例以将其用于 TreeView 时,我注意到导师曾经创建一个 ImageView:new ImageView(new Image(getClass().getResourceAsStream("/Path/to/pic"))

代替:

new ImageView(new Image("/Path/to/pic"))

我都试过了,两者都很好,我想知道使用 getClass().getResourceAsStream() 滚动是否有任何效果或意义。

最佳答案

是的。这其实很重要。

图像是一种资源。资源是程序使用的一些不变的信息,例如图像、声音、默认属性、模板、初始数据等。

当您使用 IDE 进行开发时,资源通常作为文件存储在工作区的文件夹中。因此,只要您使用的是 IDE 而不是打包程序,您就可以将资源视为文件。

但是当您想要部署您的程序(将其打包并安装到其他地方,例如服务器或其他人的计算机)时,它通常被打包到一个或多个 JAR 文件中。 JAR 文件包括已编译的类和资源。

当它们在 JAR 文件中时,资源不再是文件。它们只是 zip 条目(zip 条目不是文件 - 它们是 zip 文件的一部分,可以使用适当的软件访问)。

如果您使用文件操作来访问资源,您会遇到问题,例如 this one .图像不会显示 - 因为文件不存在。资源不是文件,它不作为文件存在于磁盘上。它只是 JAR 文件中的一组字节。

为了能够访问资源,您可以使用类对象和 getResourceAsStream(),如您所见。这“神奇地”知道(当类加载器和类路径设置正确时)当您在 IDE 中运行时,资源存储在工作区的文件中,而当您从 JAR 运行时,资源存储在 jar 。它将从存储它们的位置获取这些字节,您将能够创建您的图像。

关于java - 使用 (getClass().getResourceAsStream ("Path/to/pic")) 与 ("Path/to/pic") 的新图像实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53694687/

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