栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

getResourceAsStream(“ Words.txt”)和FileInputStream(“ ./ src / package /Words.txt”)之间有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

getResourceAsStream(“ Words.txt”)和FileInputStream(“ ./ src / package /Words.txt”)之间有什么区别?

目前,您正在开发人员工作站上,并且可能正在通过IDE运行您的应用程序。Tomcat恰好是从IDE项目根目录启动的,因此使用

new FileInputStream("./src/package/Words.txt")

允许读取存储在项目

src
目录中的文件。

但这不是项目在生产中的运行方式。在生产中,将使用Shell脚本从完全不同的目录启动Tomcat服务器。生产服务器将根本没有源项目。它所拥有的只是Tomcat,以及构成该项目构建的工件的war文件。

因此,将根本没有

src
目录,并且文件
Words.txt
甚至不会在文件系统上的任何位置。它只会是war文件(实际上是zip文件)的入口,该文件
WEB-INF/classes/package
.class
编译器从Java源文件生成的文件一起位于下面。

因此,为了能够读取该“文件”,您不能使用文件IO:“文件”在文件系统中不存在。您需要使用ClassLoader,它将在war文件中找到“文件”并从那里加载它。

当应用程序从爆炸的战争结构运行时,这在开发过程中也将很好:类加载器将在IDE所使用的目标目录下找到用于存储类文件和资源文件的类。

请注意,如果资源在软件包中,

com.foo
而MyClass在同一软件包中,则需要加载的资源是

MyClass.class.getResourceAsStream("Words.txt")

要么

AnyOtherOfYourClassesWhateverThePackageIs.class.getResourceAsStream("/com/foo/Words.txt")

要么

classLoader.getResourceAsStream("com/foo/Words.txt")


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419677.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号