file的getPath getAbsolutePath和getCanonicalPath的不同
file的這幾個取得path的方法各有不同,下邊說說詳細的區別概念上的區別:(內容來自jdk,個人感覺這個描述信息,只能讓明白的人明白,不明白的人看起來還是有點難度(特別試中文版,英文版稍好些)所以在概念之后我會舉例說明。如果感覺看概念很累就跳過直接看例子吧。看完例子回來看概念會好些。


































二、例子:
1,getPath()與getAbsolutePath()的區別













得到的結果:






getAbsolutePath()得到的是全路徑
如果構造的時候就是全路徑那直接返回全路徑
如果構造的時候試相對路徑,返回當前目錄的路徑+構造file時候的路徑
2,getAbsolutePath()和getCanonicalPath()的不同









3,getCanonicalPath()和自己的不同。
就是解釋這段話:








確定你的系統是Windows系統。
(1),確定D盤下沒有Text.txt這個文件,直接執行這段代碼,得到的結果是:

(2)在D盤下建立一個文件,名叫text.txt,再次執行代碼,得到結果

同時可以對比getAbsolutePath()看看,這個得到的結果是一樣的。
原因:
window是大小寫不敏感的,也就是說在windows上test.txt和Test.txt是一個文件,所以在windows上當文件不存在時,得到的路徑就是按照輸入的路徑。但當文件存在時,就會按照實際的情況來顯示。這也就是建立文件后和刪除文件后會有不同的原因。文件夾和文件類似。
三、最后:
1,嘗試在linux下執行上邊的步驟,兩次打印的結果是相同的,因為linux是大小寫敏感的系統。
2,手動刪掉test.txt,然后嘗試執行下邊代碼


















1,的結果是兩個大寫,
2,的結果試兩個小寫
連續兩個大寫的,是否跟上邊的矛盾 ?
這是因為虛擬機的緩存機制造成的。第一次File file = new File("D:\\Text.txt");決定了結果.
posted on 2007-08-08 09:12 dreamstone 閱讀(67634) 評論(8) 編輯 收藏 所屬分類: jdk相關