java开发之文件路径剖析
2017-04-25 20:47
211 查看
从事开发工作三年有余,但是说句实话,对于项目开发中文件的相对路径该如何写,一直是一个很困扰我的问题,今天花时间终于把这块搞明白了,特此写一篇博客,一是为了便于自己记忆,二是也希望和我一样有困扰的朋友们看了有所帮助,文章纯属个人经实战验证后参悟出来的道理,不足之处望大家留言指出,非常感谢!好了,切入正题吧!
要弄清文件的相对路径问题首先依次解答以下几个问题:
第一、普通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获取资源文件三种情况下相对路径的写法。
要弄清文件的相对路径问题首先依次解答以下几个问题:
第一、普通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获取资源文件三种情况下相对路径的写法。
相关文章推荐
- 谈谈Java开发中遇到的资源文件路径问题(二)
- JavaWeb开发中的文件访问路径
- Java 开发报表时候报表文件路径
- 谈谈Java开发中遇到的资源文件路径问题(一)
- java开发,在本地与服务器上读取文件的方法,不用每次都修改路径(主要在部署的时候做变动)
- JAVA开发10--加载相对路径下配置文件并读取内容
- 关于Java文件路径问题
- 关于Java文件路径问题
- 剖析Rose文件,开发你自己的XDE
- 关于Java文件路径问题 [转载]
- 关于Java文件路径问题
- 关于Java文件路径问题
- 基于WEB应用开发的java程序员必备工具(脚本调试工具、java剖析工具)
- 关于Java文件路径问题
- 相对路径获取JAVA配置文件Class.getResourceAsStream() & ClassLoader的getResourceAsStream()
- 在JAVA文件中获取该项目的相对路径
- 关于Java文件路径问题(转)
- java文件路径
- 关于Java文件路径问题(原创+转贴)
- 谈谈Java Web开发的学习路径