欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈web项目读取classpath路径下面的文件

程序员文章站 2023-12-17 23:29:10
本文主要研究的是web项目下读取classpath路径下的文件的问题,具体如下。 首先分两大类按web容器分类 一种是普通的web项目,像用tomcat容器,特点是压缩...

本文主要研究的是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路径下面的文件的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

上一篇:

下一篇: