天天看點

IDE工具運作Java和jar包運作時的檔案路徑問題

有時候遇到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());
	}
}
           

項目的絕對路徑為:D:\project\testPath

其中testPath為項目名稱。

用IDE工具運作時:

路徑:

不加“/”,直接在項目的根目錄下(即testPath目錄下,也就是src同級目錄中)生成檔案

加“/”,在項目所在盤符的根目錄下生成檔案(即在D:盤下)

加“../”,在項目所在目錄中(即D:\project目錄下,也就是項目同級目錄中)生成檔案

如果打成jar包運作時:(假設jar包位于:D:\project\jar檔案夾下)

路徑:

不加“/”,和jar包同級的目錄下生成檔案(D:\project\jar檔案夾下)

加“/”,在jar包所在盤符的根目錄下生成檔案(D:盤下)

加“../”,在jar包的上級目錄中生成檔案(D:\project檔案夾下)

總結:

在項目中是以項目的根目錄(src所在目錄)為目前目錄,

使用jar包,是以jar包所在位置為目前目錄。

“/”表示的是檔案所在位置的根路徑(目前盤符),“../”表示所在位置的上一級路徑,不加“/”則是項目根路徑或jar的目前位置。