JAVA使用相对路径读取配置文件

JAVA使用相对路径读取配置文件[align=center][/align][size=medium][/size]
在软件开发中经常遇到读取配置文件,以及文件定位问题。今天做个总结。
(一)在java project中的配置文件读取
java project项目的目录结构只有两个src和bin。src中存放的是源文件,bin中存放的是*.class的字节码文件。源文件进过编译就放进bin目录中,其中也包括没有编译的配置文件。我们需要的是对bin中的配置文件进行读取,因为项目最终打包成*.jar的就是bin目录下的文件。采用相对路劲进行读取的时候,需要确定此时相对的是哪一个基路径。其实这个基路径就是java.io默认定位到的当前用户目录("user.dir")(即工程根目录)。相对于这个路径在定位我们的配置文件。如下所示:
File file=new File("test/login.conf");
JVM就可以据"user.dir"与"test/login.conf" 得到完整的路径(即绝对路径)"D:\DecisionTree\test\login.conf",从而找到login.conf文件。
通常我们使用 “类名”.class.getClassLoader().getResource("login.conf").openStream()来加载classes目录下的配置文件。得到文件的输入流。
“类名”.class.getClassLoader().getResource("")定位到的绝对路径是WEB-INF\classes目录下。getResource(String filepath)。参数filepath是classes目录下的相对路径。
(二)在java web project中的配置文件读取
如果我们把配置文件定义在了classpath路径下。也就是WEB-INF\classes路径下,那么就可以像读取java project中的配置文件那样读取了。
如果我们把配置文件定义在了WEB-INF的直接目录下。而不是classes目录下,那么是classpath之外的路径了,通过上面的那种方式是读取不到了。这是在应用环境下,要用到ServletContext,
ServletActionContext.getServletContext().getResource("/")可以定位到当前web应用目录 如:jndi:/server/TEST/ TEST为当前的web应用系统名。getResource(String filepath) 注意其中filepath必须以“/”开始。
ServletActionContext.getServletContext().getResourceAsStream("/WEB-INF/config/login.conf");就可以得到/WEB-INF/config/login.conf文件的输入流了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值