记一次读取文件的(系统找不到指定的路径)
目录
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