有时候遇到Java代码中出现相对路径时,会比较疑惑文件路径的问题,所以做了一个测试,分别测试了如下代码中的三种情况:
import java.io.File;
import java.io.IOException;
public class TestPath {
public static void main(String[] args) throws IOException {
// String path1 = "../file/aaa";
// String path2 = "../file/aaa/bbb";
// String path3 = "../file/aaa/bbb/test.txt";
// String path1 = "/file/aaa";
// String path2 = "/file/aaa/bbb";
// String path3 = "/file/aaa/bbb/test.txt";
String path1 = "file/aaa";
String path2 = "file/aaa/bbb";
String path3 = "file/aaa/bbb/test.txt";
File file1 = new File(path1);
File file2 = new File(path2);
File file3 = new File(path3);
System.out.println("file1:" + file1.mkdirs());
System.out.println("file2:" + file2.mkdir());
System.out.println("file3:" + file3.createNewFile());
}
}
用IDE工具运行时:
路径前面不加“/”,直接在项目的根目录下(即src同级目录中)生成文件
路径前面加“/”,在项目所在盘符的根目录下生成文件路径前面加“../”,在项目所在目录中(即项目同级目录中)生成文件
路径前面不加“/”,和jar包同级的目录下生成文件
路径前面加“/”,在jar包所在盘符的根目录下生成文件
路径前面加“../”,在jar包的上级目录中生成文件
总结:
在项目中是以项目的根目录(src所在目录)为当前目录,
使用jar包,是以jar包所在位置为当前目录。
“/”表示的是文件所在位置的根路径,“../”表示所在位置的上一级路径。