关于读取Properties文件的相对路径问题,怎么写是正确的

关于读取Properties文件的相对路径问题,怎么写是正确的,第1张

FileInputStream只能定位绝对路径,所以你填入相对路径当然找不到。

读取资源文件一般根据上下文环境分为两种情况。

第一种是非WEB应用的环境中,只需要简单的通过类加载器的getResourceAsStream方法读取。

例如,classpath根目录下有一个setting.properties文件,可以这样读取

Java代码 收藏代码

InputStream is = Thread.currentThread().getClass().getResourceAsStream("/setting.properties")

第二种是WEB应用的环境中,因为应用包含在了Servlet 容器中,所以情况相对来说要复杂一些。

同上一样,读取classpath中的资源,依然通过类加载读取,但是通过上下文的类加载器中去读。

例如,

Java代码 收藏代码

InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("/setting.properties")

读取WebContent目录中的情况又不一样了,不能通过类加载器读取,需要通过ServletContext去读。

例如,

Java代码 收藏代码

InputStream is = request.getServletContext().getResourceAsStream("/WEB-INF/setting.properties")

放在包里,要用特殊的方法——getResourceAsStream(),直接用相对路径、绝对路径都不对!

InputStream is = this.getClass().getResourceAsStream(".properties")

BufferedReader br = new BufferedReader(new InputStreamReader(is))

这里面也涉及到路径问题,试试看。

loader.getResourceAsStream()肯定是不对的,这样只会在ClassLoader所在的包内找,显然找不到你的配置文件,除非这个类是你重写的,而且与配置文件打包在一个包里

你的"dao.properties"文件是放在哪个目录下的?也就说说的你class结构是什么样子?

如果是同ConfigUtil类同目录,那么试下

InputStream ips=ConfigUtil.class.getResourceAsStream("dao.properties")

如果是其它目录,那么就必须用绝对路径了!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12028508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存