java开发之文件路径剖析

从事开发工作三年有余,但是说句实话,对于项目开发中文件的相对路径该如何写,一直是一个很困扰我的问题,今天花时间终于把这块搞明白了,特此写一篇博客,一是为了便于自己记忆,二是也希望和我一样有困扰的朋友们看了有所帮助,文章纯属个人经实战验证后参悟出来的道理,不足之处望大家留言指出,非常感谢!好了,切入正题吧!

要弄清文件的相对路径问题首先依次解答以下几个问题:

第一、普通java工程目录和web工程目录有什么区别?

            1、创建时对比:web项目相对于普通java项目多了一个企业级开发环境javaee

          

         

           2.项目目录对比:web项目多了javaee开发所需要的jar包

          

第二、web项目目录结构:eclipse中项目目录中src下的文件编译后会放到WebRoot/WEB-INF/classes目录下,发布时会将WebRoot下的所有内容拷贝到tomcat/webapps/web应用名/下:


第三、不同场景下文件的相对路径是相对什么而言的?

             1.普通java类中:相对路径的根目录是项目的根文件夹,即是相对于项目根目录而言的,所以在书写相对路径时应以根目录为参考点,在此就是GenericProject文件夹了

             

             2.通过ServletContext获取资源文件时:相对路径是web应用所在根目录,注意这里是web应用而不是工程目录,即对应于tomcat中web应用所在根目录;注意:工程目录中直接放在项目根目录下的资源文件是获取不到的,因为项目发布时只是将webroot下的内容发布过去,而对于项目根目录下的文件是不发布的,即这里的project.properties是获取不到的

            

             

             3.通过类加载器获取资源文件时:通过类加载器获取资源文件时,相对路径是相对于类加载器加载.class文件的根目录的

             

但是,此处需注意一个问题,当我们通过classLoader.getResourceAsStream(文件相对路径),将文件以流的方式读进内存时,如果此时再更改资源文件1.properties,内存中的数据因为没有重新加载,所以数据是不能保持同步更新的,所以一般不使用这种以流的方式获取资源文件的,而是用下面的方式:



以上总结了三种场景下文件的相对路径该如何书写问题,包括在普通java类中的相对路径,通过类加载器获取资源以及通过ServletContext获取资源文件三种情况下相对路径的写法。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值