目录
问题描述
问题分析
问题总结
问题描述
idea引入文件,系统去读取,但是路径的问题报错系统找不到指定文件
String filePath = "test.txt";
try {FileInputStream fileInputStream = new FileInputStream(filePath);
} catch (FileNotFoundException e) {throw new RuntimeException(e);
}
文件位置如下,在service模块的resources下,当前业务代码也在service模块下
问题分析
找不到文件第一步先确认是项目中是否有这个文件
可以看到运行时打包是有这个文件的,所以排除这个原因
第二步,就是确定路径的问题了
当前文件的绝对路径为: D:\Idea Project\phoenix\phoenix-service\src\main\resources\test.txt
已知的是,拿绝对路径是ok的,但现在问题是我们怎么找到当前文件的相对路径
经过测试,当前情况拿src/main/resources/test.txt 和 test.txt 测试都是失败的
了解到路径的相对路径是有基准的
相对路径的基准
在使用相对路径时,要了解它是相对于哪个基准目录的。一般来说,相对路径是相对于运行程序的当前工作目录的。
- 如果你在 IDE 中运行程序,工作目录通常是项目的根目录。
- 如果你从命令行运行程序,工作目录是你执行命令的目录。
此时意识到,当前单测代码位于phoenix-server模块,那么相对路径应该是从phoenix-server
模块的根目录下对应
所以将test.txt移到了phoenix-server模块下,此时该文件的绝对路径为:D:\Idea Project\phoenix\phoenix-server\src\main\resources\test.txt,读取文件成功,当前文件的相对路径为:src/main/resources/test.txt
问题总结
1. 首先确定文件是否存在
2. 其次相对路径是由基准的,是基于当前运行启动所在的模块的根目录去相对的