我们先看java项目工程结构

一、jar包结构

1.编译前

Java项目中文件路径问题

2.编译后

Java项目中文件路径问题

编译前:一级目录src main下有java、resources

编译后:一级目录classes下有各包名、资源文件

二、war包结构

1.编译前

Java项目中文件路径问题

2.编译后

Java项目中文件路径问题

编译前:一级目录src main下有webapp、java、resources

编译后:一级目录项目名下有各静态文件名包WEB-INF、META_INF,其中WEB-INF下包含classes,lib,各网页和web.xml;其中classes和jar包结构一样

 

三、认识了目录结构去取目录下的文件就清楚了

1.取war包下的静态资源文件(css,js,image等等)

直接去取request.getContextPath()取得项目名+静态资源路径+静态文件名

2.取resources下的资源文件

因为无论jar包还是war包编译后的资源在classes里

(1)取文件只需Resource file=new ClassPathResource(“resources文件下的资源路径+文件”);

(2)取文件只需InputStream in=Class.getResourceAsStream(“/resources文件下的资源路径+文件”);

(3)用ResourceBundle.getBundle(“resources下不带后缀名的文件名”)读取properties文件。

3.取包下的文件

(1) 取包下的文件InputStream in=本class.getResourceAsStream(“本类包下文件的资源相对路径+文件”)。 注:这里路径开始没有“/”,有“/”会以编译后的classes目录为相对路径

4.取工程外硬盘上的文件

直接 new File(“路径名+文件”);

 

注:如果不是以绝对路径取resources下的文件时:war包resources下的文件会覆盖所依赖的jar包resources下的文件。

 

 

 

 

 

相关文章: