java file path abstract path absolute path canonical path

  1. path,普通路徑名,由getPath()方法返回,就是你構造File時指定路徑名。如File f = new File("testFile.txt");則f.getPath()返回的就是"testFile.txt".
2.abstract pathname,根據File的toString方法的說明,這個也是getPath()返回的結果,和上面的一樣。
String java.io.File.toString()
Returns the pathname string of this abstract pathname. This is just the string returned by the getPath method. 

3. absolute path,未修飾的絕對路徑,像表示上一級路徑的符號"..",在absolute path中是直接顯示的。
如File abstractf = new File("..\\testFile.txt");
System.out.println(abstractf.getAbsolutePath());
結果就是 D:\springWorkSpace\Fortest\..\testFile.txt

4. canonical path:修飾過的絕對路徑。上面abstractf路徑中的".."會被解釋成上一級路徑。如:
System.out.println(abstractf.getAbsolutePath());
結果就是 D:\springWorkSpace\testFile.txt

public static void main(String[] args){
		try {
			File f = new File("testFile.txt");
			File abstractf = new File("..\\testFile.txt");
			File emptyf = new File("");
			System.out.println("f's abstract path:" + f.getPath());
			System.out.println("f.getAbsolutePath():" + f.getAbsolutePath());
			System.out.println("f.getCanonicialPath():" + f.getCanonicalPath());
			System.out.println("abstractf's abstract path:" + abstractf.getPath());
			System.out.println("abstractf.getAbsolutePath():" + abstractf.getAbsolutePath());
			System.out.println("abstractf.getCanonicialPath():" + abstractf.getCanonicalPath());
			System.out.println("emptyf's abstract path:" + emptyf.getPath());
			System.out.println("emptyf.getAbsolutePath():" + emptyf.getAbsolutePath());
			System.out.println("emptyf.getCanonicialPath():" + emptyf.getCanonicalPath());


			File newFile = new File(emptyf,"newFile.txt");
			System.out.println("-------------");
			System.out.println("newFile's abstract path: " + newFile.getPath());
			System.out.println("newFile's absolute path: " + newFile.getAbsolutePath());
			System.out.println("newFile's canonicial path: " + newFile.getCanonicalPath());

			FileWriter newWriter = new FileWriter(newFile);
			newWriter.write("new test data");
			newWriter.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

輸出:

f's abstract path:testFile.txt
f.getAbsolutePath():D:\springWorkSpace\Fortest\testFile.txt
f.getCanonicialPath():D:\springWorkSpace\Fortest\testFile.txt
abstractf's abstract path:..\testFile.txt
abstractf.getAbsolutePath():D:\springWorkSpace\Fortest\..\testFile.txt
abstractf.getCanonicialPath():D:\springWorkSpace\testFile.txt
emptyf's abstract path:
emptyf.getAbsolutePath():D:\springWorkSpace\Fortest
emptyf.getCanonicialPath():D:\springWorkSpace\Fortest
-------------
newFile's abstract path: \newFile.txt
newFile's absolute path: D:\newFile.txt
newFile's canonicial path: D:\newFile.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章