记一次读取文件的(系统找不到指定的路径)

目录

1:写在前面

2:过程

2.1:环境准备

2.2:结果演示

2.3:改进

3:总结


1:写在前面

我们平常在做项目的时候,必然会涉及到文件的读取,但是偶尔会碰到这么一种情况,就是项目在本地测试的时候是好好的,一旦打包成jar包(目前主流的一般都是使用的是微服务的架构,方便快捷)运行,就会出现文件路径找不到java.lang.RuntimeException: file\test.txt (系统找不到指定的路径。) 类似的问题,就笔者之前碰到的问题彻底的分析一下。

2:过程

2.1:环境准备

1:创建一个springBoot项目,结构如图,其中test.txt 内容随便记一次读取文件的(系统找不到指定的路径)

 

2:service 结构

记一次读取文件的(系统找不到指定的路径)

3:controller结构

记一次读取文件的(系统找不到指定的路径)

 

2.2:结果演示

1:本地启动项目进行测试,结果很是完美,可以读取到文件

记一次读取文件的(系统找不到指定的路径)

 

2:接下来我们使用maven工具对项目进行编译,打包 ---- > 形成 read_file-0.0.1-SNAPSHOT.jar

记一次读取文件的(系统找不到指定的路径)

3:找到jar目录地址

记一次读取文件的(系统找不到指定的路径)

4:我测试的时候使用的是windows系统,直接在当前目录下面输入cmd,执行cmd命令(这个操作骚的一匹),随后弹出小黑框,项目成功启动

记一次读取文件的(系统找不到指定的路径)

5:接下来我们继续调用这个获取文件的接口看一下结果,结果很完美的出现了我们想要的结果

 

记一次读取文件的(系统找不到指定的路径)

2.3:改进

1:这一次我们在读取文件的时候,使用getResourceAsStream去读取

记一次读取文件的(系统找不到指定的路径)

2:本地可以读取成功,没有任何问题

记一次读取文件的(系统找不到指定的路径)

3:再回到之前的,将项目打成一个jar包的形式去运行, 看看能不能读取到。还是之前的一样的方式。

记一次读取文件的(系统找不到指定的路径)

4:运行这个新的jar,还是使用之前的骚操作,到项目当前目录,输入cmd 运行cmd命令行

记一次读取文件的(系统找不到指定的路径)

5:测试结果,没有报错,说明文件已经读取到了。

记一次读取文件的(系统找不到指定的路径)

3:总结

为什么使用前一种方式,本地就可以运行,放到服务器上面就不行了呢,原因是因为本地确确实实存在这这个文件,可以直接File类进行文件的读取,但是一旦打包成功后,由于springboot项目会打包成一个jar包,读取jar里面的内容,还是用之前的读取文件的方式就肯定行不通了,想要读取一个jar里面的东西,我们可以类加载器 ---> getResourceAsStream(path)提供的方法进行读取,切记,切记,切记。

源码已上传到 码云托管 地址: https://gitee.com/zccpojo/read_file