有時候遇到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的目前位置。