首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用(getClass().getResourceAsStream("Path/to/pic")) vs ("Path/to/pic")的新图像实例

使用(getClass().getResourceAsStream("Path/to/pic")) vs ("Path/to/pic")的新图像实例
EN

Stack Overflow用户
提问于 2018-12-09 17:10:30
回答 1查看 442关注 0票数 3

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

而不是:

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-10 16:17:37

是。这其实是很重要的。

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

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

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

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

如果使用文件操作访问资源,就会遇到一个问题,比如this one。图像将不会显示-因为文件不在那里。资源不是文件,它不作为磁盘上的文件存在。它只是JAR文件中的一组字节。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53694687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档