我们先看java项目工程结构
一、jar包结构
1.编译前
2.编译后
编译前:一级目录src main下有java、resources
编译后:一级目录classes下有各包名、资源文件
二、war包结构
1.编译前
2.编译后
编译前:一级目录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下的文件。