浅谈web项目读取classpath路径下面的文件
2018-01-11 08:54
519 查看
本文主要研究的是web项目下读取classpath路径下的文件的问题,具体如下。
首先分两大类按web容器分类
一种是普通的web项目,像用Tomcat容器,特点是压缩包随着容器的启动会解压缩成一个文件夹,项目访问的时候,实际是去访问文件夹,而不是jar或者war包。
这种的无论你是用获取路径的方法
this.getClass().getResource("/")+fileName
获取流的方法
this.getClass().getResourceAsStream(failName);
import org.springframework.util.ResourceUtils; File file= ResourceUtils.getFile("classpath:test.txt");
或者
ClassPathResource classPathResource = new ClassPathResource("test.txt");
获取文件:
classPathResource .getFile();
获取文件流:
classPathResource .getInputStream();
第二种是内嵌web容器,其特点是只有一个jar文件,在容器启动后不会解压缩,项目实际访问时jar包或者war包
这种最容易遇坑,最大的坑就是,用第一种方式读取,在eclipse,本地调试,完美运行,到linux环境下,就不行.
首先用获取路径的方法
this.getClass().getResource("/")+fileName,获取流的方法
this.getClass().getResourceAsStream(failName);
在本地运行时,绝壁能找到,你打印出来路径,没错,是咱们eclipse的工作目录,项目目录,但是在target目录下。
现在给你分析为什么去到线上,就GG了,很简单,线上内嵌的工程,我们只会放一个jar文件上去,我理解是jar里面的路径是获取不到的,jar是封闭性东西吧,不像文件夹,总不能c:/home/xx.jar/file.txt
读取jar里面的文件,我们只能用流去读取,不能用file,文件肯定要牵扯路径,jar那个路径刚刚我已经拼出来了
jar里面文件读取方式:
ClassPathResource classPathResource = new ClassPathResource("test.txt");
获取文件流:
classPathResource .getInputStream();
总结
以上就是本文关于浅谈web项目读取classpath路径下面的文件的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- web项目读取classpath路径下面的文件
- web项目读取classpath下面文件
- web项目读取classpath下面文件心得总结
- web项目读取classpath下面文件心得总结
- java项目和web项目读取文件通用路径(类路径)
- web项目中从不同的路径读取文件
- 读取web项目properties文件路径 解决tomcat服务器找不到properties路径问题
- VS打开.net工程提示"无法读取项目文件"web.csproj",系统找不到指定路径"
- 两种在web项目中获取读取文件的路径的方法
- Java在Web项目中读取properties文件
- 无法打开Web项目 文件路径与URL不符。这两者需要映射到相同的服务器位置
- Maven组织的web项目读取WEB-INF下properties文件
- web项目中读取properties文件的方法总结
- C# 获取文件路径,读取项目中某程序集下文件
- Web 项目 中读取专用配置文件
- Eclipse--Web项目中 .classpath、mymetadata、project文件的功用
- Java Web 项目获取运行时路径 classpath
- Tomcat项目发布的三种方式;一种:直接将项目(文件)直接复制到tomcat/webapps下二种:在tomcat/conf/server.xml配置tomcat的虚拟路径;
- Java项目中读取properties文件,以及六种获取路径的方法
- 今天在ASP.NET上在写一个读取EXCEL文件内容的功能,但是IE8貌似把文件路径给屏蔽了,在IE6下面读取正常!有啥好办法?