IDE工具运行Java和jar包运行时的文件路径问题

时间:2022-05-08 12:12:12


有时候遇到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包所在盘符的根目录下生成文件
路径前面加“../”,在jar包的上级目录中生成文件


总结:
在项目中是以项目的根目录(src所在目录)为当前目录,

使用jar包,是以jar包所在位置为当前目录。

“/”表示的是文件所在位置的根路径,“../”表示所在位置的上一级路径。