java开发之文件路径剖析

来源:互联网 发布:死神vs火影月改优化版 编辑:程序博客网 时间:2024/06/10 02:22

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

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

第一、普通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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 穿书后,我刷错了反派的好感度 摄政王怀里的团宠美人娇又软 满级千金不想掉马 女帝她就是个卖药的! 华娱激荡年代 她来看我的演唱会 快穿:娇养反派大佬做替身 不努力种田就要和相公继承皇位了 穿书末世之我是金手指 转生恶少后的魔幻日常 穿书后我成了反派男二的铁血妈粉 带着超市重返年代 新婚夜,我被冷冰冰的王爷读心了 修仙女配拿了反派剧本 影后的假面童话 克死前夫后我成了心软的神 新婚夜,我治好了失明太子的隐疾 沦陷野玫瑰 完球!我的崽居然是反派 重生后她被憨憨相公娇宠了 师祖回归,徒弟各个是疯批大佬 植物人老公苏醒后,她只想逃 他怎么可能是魔尊 农家小团宠:带着空间撩大佬 快穿做个好婆婆 医路芳华 满级真千金:一品女法医 惊!举重妖精被电竞奶狗缠上了 团宠小农女:带着功德空间去逃荒 被迫快穿后我只想当咸鱼 顶流影帝竹马来讨债 穿越后,太子妃靠种田轰动全京城 高考结束后我和死对头HE了 掉马后满级大佬被迫在热搜上开挂 农门悍妻:黑心莲夫君求抱抱 今日宜婚 嗜酒成瘾 肆意诱哄 快穿之反派女配是bug 落水后,我抢了未来首辅的婚! 玄学大佬在八零年代暴富了!