当我们在创建一个文件对象的时候,可以使用相对路径或者绝对路径,如下所示。
绝对路径:
File file = new File("/text.txt");
相对路径:
File file = new File("text.txt");
那么Java对于这两种情况,是如何查找对应的文件的呢?
1、项目根目录
我们不管使用java
命令,还是使用IDEA运行一个程序,都必须有一个项目根目录,在Java中可以使用以下代码获得项目根目录:
System.out.println(System.getProperty("user.dir"));
1.1 java命令方式
当我们使用java命令运行一个程序时,如果没有手动指定项目根目录,则项目根目录默认是执行java命令的目录。当然,我们也可以手动指定项目根目录:
java -Duser.dir=E:\WorkPlace
如上就是在Windows系统中指定当前程序的项目根目录为E:\WorkPlace
。
当然也可以在Linux系统中指定:
java -Duser.dir=/
表示指定当前程序的项目根目录为/
。
1.2 IDEA方式
使用IDEA运行程序时,也可以指定项目根目录:
如果当前项目是一个模块,可以使用$MODULE_DIR$
参数:
如果不指定,则默认表示为运行当前项目的目录:
2、绝对路径
假设当前的项目根目录为E:\WorkPlace
,则File file = new File("/text.txt");
表示查找项目根目录所在的磁盘根目录下的text.txt
文件,即E:\text.txt
。
其中,绝对路径中开头的/
就是表示项目根目录所在的磁盘根目录(Windows系统),或者是Linux系统的根目录/
。
3、相对路径
假设当前的项目根目录为E:\WorkPlace\IDEA\my-springboot-001
,则File file = new File("text.txt");
表示查找项目根目录下的text.txt
文件,即E:\WorkPlace\IDEA\my-springboot-001\text.txt
。
其中,相对路径就是相对于项目根目录查找。
注意:创建一个文件对象使用相对路径时,路径的
./
和../
并不是表示当前目录和当前目录的上一个目录,而是表示目录名,即名为.
和..
的文件夹。