java classpath 读取文件_java相关:浅谈web项目读取classpath路径下面的文件

java相关:浅谈web项目读取classpath路径下面的文件

发布于 2020-3-3|

复制链接

摘记: 本文主要研究的是web项目下读取classpath路径下的文件的问题,具体如下。首先分两大类按web容器分类一种是普通的web项目,像用Tomcat容器,特点是压缩包随着容器的启动会解压缩成一个文件夹,项目访问的时候,实际是去访问文件夹,而不是jar或者war包。这种的无论你是用获取路径的方法thi ..

本文主要研究的是web项目下读取classpath路径下的文件的问题,具体如下。首先分两大类按web容器分类一种是普通的web项目,像用Tomcat容器,特点是压缩包随着容器的启动会解压缩成一个文件夹,项目访问的时候,实际是去访问文件夹,而不是jar或者war包。这种的无论你是用获取路径的方法this.getClass().getResource("/")+fileName获取流的方法this.getClass().getResourceAsStream(failName);

```java

import org.springframework.util.ResourceUtils;

File file= ResourceUtils.getFile("classpath:test.txt");

```

或者

```java

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里面文件读取方式:

```java

ClassPathResource classPathResource = new ClassPathResource("test.txt");

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值