Tinysun
BlogJava
首頁
新隨筆
新文章
聯系
聚合
管理
posts - 134,comments - 22,trackbacks - 0
<
2009年3月
>
日
一
二
三
四
五
六
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
我參與的團隊
ica推薦系統(0/0)
隨筆分類
Algorithm and Data Structure(9)
C/C++(38)
GNU Linux/Unix(35)
J2SE(10)
Java開源(1)
Linux 多線程(4)
Microsoft Dynamic AX(2)
VC++/MFC(3)
Win32API 編程(2)
XML相關(1)
其他(9)
數據庫和SQL (10)
新技術新概念(1)
設計模式(1)
隨筆檔案
2012年8月 (1)
2012年2月 (1)
2011年5月 (1)
2011年1月 (3)
2010年11月 (1)
2010年10月 (6)
2010年9月 (12)
2010年8月 (12)
2010年7月 (6)
2010年6月 (4)
2010年5月 (19)
2010年4月 (4)
2010年3月 (2)
2010年2月 (7)
2010年1月 (1)
2009年12月 (16)
2009年11月 (6)
2009年5月 (1)
2009年4月 (4)
2009年3月 (8)
2009年2月 (8)
2009年1月 (1)
2008年12月 (1)
2008年11月 (5)
2008年10月 (2)
2008年5月 (2)
2008年3月 (1)
收藏夾
C/C++(1)
Java(1)
C++ 社區
artima developer
C plus plus
drdobbs
Lippman
常用網站
CodeProject
VC知識庫
搜索
最新評論
1.?re: vi使用技巧(二):copy,paste,delete,塊編輯,redo/undo
學無止境。
--jtony
2.?re: 中英文網頁中雙語語料的挖掘
你的軟件賣嗎?請加我qq
:1679461908
--tm
3.?re: 中英文網頁中雙語語料的挖掘
可否加我,qq: 1679461908
--tm
4.?re: 中文分詞免費源碼資源
中文分詞免費源碼資源
--8888
5.?re: 全文檢索的基本原理
懂點了。
人工智能
--謝謝分享
閱讀排行榜
1.?大端法、小端法、網絡字節序 轉(31371)
2.?均方根值(RMS)、均方根誤差(RMSE)、各種平均值 (17123)
3.?vi使用技巧(二):copy,paste,delete,塊編輯,redo/undo(12340)
4.?MFC下關于“建立空文檔失敗”問題的分析(轉載)(9121)
5.?linux下which、whereis、locate、find 命令的區別(5142)
評論排行榜
1.?PL/X編譯器設計與實現(9)
2.?利用牛頓迭代法求平方根(轉)(4)
3.?中英文網頁中雙語語料的挖掘(3)
4.?全文檢索的基本原理(1)
5.?用戶態非搶占式線程庫實現 (轉)(1)
file的getPath getAbsolutePath和getCanonicalPath的不同
file的這幾個取得path的方法各有不同,下邊說說詳細的區別
概念上的區別:(內容來自jdk,個人感覺這個描述信息,只能讓明白的人明白,不明白的人看起來還是有點難度(特別試中文版,英文版稍好些)所以在概念之后我會舉例說明。如果感覺看概念很累就跳過直接看例子吧。看完例子回來看概念會好些。
getPath
public
String getPath()將此抽象路徑名轉換為一個路徑名字符串。所得到的字符串使用默認名稱分隔符來分隔名稱序列中的名稱。
返回:
此抽象路徑名的字符串形式
getAbsolutePath
public
String getAbsolutePath()返回抽象路徑名的絕對路徑名字符串。
如果此抽象路徑名已經是絕對路徑名,則返回該路徑名字符串,這與 getPath() 方法一樣。如果此抽象路徑名是空的抽象路徑名,則返回當前用戶目錄的路徑名字符串,該目錄由系統屬性 user.dir 指定。否則,使用與系統有關的方式分析此路徑名。在 UNIX 系統上,通過根據當前用戶目錄分析某一相對路徑名,可使該路徑名成為絕對路徑名。在 Microsoft Windows 系統上,通過由路徑名指定的當前驅動器目錄(如果有)來分析某一相對路徑名,可使該路徑名成為絕對路徑名;否則,可以根據當前用戶目錄來分析它。
返回:
絕對路徑名字符串,它與此抽象路徑名表示相同的文件或目錄的
拋出:
SecurityException
-
如果無法訪問所需的系統屬性值。
另請參見:
isAbsolute()
getCanonicalPath
public
String
getCanonicalPath
()
throws
IOException返回抽象路徑名的規范路徑名字符串。
規范路徑名是絕對路徑名,并且是惟一的。規范路徑名的準確定義與系統有關。如有必要,此方法首先將路徑名轉換成絕對路徑名,這與調用 getAbsolutePath() 方法的效果一樣,然后用與系統相關的方式將它映射到其惟一路徑名。這通常涉及到從路徑名中移除多余的名稱(比如
"
.
"
和
"
..
"
)、分析符號連接(對于 UNIX 平臺),以及將驅動器名轉換成標準大小寫形式(對于 Microsoft Windows 平臺)。
表示現有文件或目錄的每個路徑名都有一個惟一的規范形式。表示非存在文件或目錄的每個路徑名也有一個惟一的規范形式。非存在文件或目錄路徑名的規范形式可能不同于創建文件或目錄之后同一路徑名的規范形式。同樣,現有文件或目錄路徑名的規范形式可能不同于刪除文件或目錄之后同一路徑名的規范形式。
返回:
表示與此抽象路徑名相同的文件或目錄的規范路徑名字符串
拋出:
IOException
-
如果發生 I
/
O 錯誤(可能是因為構造規范路徑名需要進行文件系統查詢)
SecurityException
-
如果無法訪問所需的系統屬性值,或者存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒絕對該文件進行讀取訪問
從以下版本開始:
JDK1.
1
二、例子:
1,getPath()與getAbsolutePath()的區別
public
static
void
test1()
{
File file1
=
new
File(
"
.\\test1.txt
"
);
File file2
=
new
File(
"
D:\\workspace\\test\\test1.txt
"
);
System.out.println(
"
-----默認相對路徑:取得路徑不同------
"
);
System.out.println(file1.getPath());
System.out.println(file1.getAbsolutePath());
System.out.println(
"
-----默認絕對路徑:取得路徑相同------
"
);
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
}
得到的結果:
-----
默認相對路徑:取得路徑不同
------
.\test1.txt
D:\workspace\test\.\test1.txt
-----
默認絕對路徑:取得路徑相同
------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
因為getPath()得到的是構造file的時候的路徑。
getAbsolutePath()得到的是全路徑
如果構造的時候就是全路徑那直接返回全路徑
如果構造的時候試相對路徑,返回當前目錄的路徑+構造file時候的路徑
2,getAbsolutePath()和
getCanonicalPath
()的不同
public
static
void
test2()
throws
Exception
{
File file
=
new
File(
"
..\\src\\test1.txt
"
);
System.out.println(file.getAbsolutePath());
System.out.println(file.
getCanonicalPath
());
}
得到的結果
D:\workspace\test\..\src\test1.txt
D:\workspace\src\test1.txt
可以看到CanonicalPath不但是全路徑,而且把..或者.這樣的符號解析出來。
3,
getCanonicalPath
()和自己的不同。
就是解釋這段話:
表示現有文件或目錄的每個路徑名都有一個惟一的規范形式。表示非存在文件或目錄的每個路徑名也有一個惟一的規范形式。非存在文件或目錄路徑名的規范形式可能不同于創建文件或目錄之后同一路徑名的規范形式。同樣,現有文件或目錄路徑名的規范形式可能不同于刪除文件或目錄之后同一路徑名的規范形式。
單下邊這段代碼是看不到結果的,要配合一定的操作來看。下邊操作步驟,同時講解
public
static
void
test3()
throws
Exception
{
File file
=
new
File(
"
D:\\Text.txt
"
);
System.out.println(file.
getCanonicalPath
());
}
步驟:
確定你的系統是Windows系統。
(1),確定D盤下沒有Text.txt這個文件,直接執行這段代碼,得到的結果是:
D:\Text.txt
注意這里試大寫的Text.txt
(2)在D盤下建立一個文件,名叫text.txt,再次執行代碼,得到結果
D:\text.txt
同樣的代碼得到不同的結果。
同時可以對比getAbsolutePath()看看,這個得到的結果是一樣的。
原因:
window是大小寫不敏感的,也就是說在windows上test.txt和Test.txt是一個文件,所以在windows上當文件不存在時,得到的路徑就是按照輸入的路徑。但當文件存在時,就會按照實際的情況來顯示。這也就是建立文件后和刪除文件后會有不同的原因。文件夾和文件類似。
三、最后:
1,嘗試在linux下執行上邊的步驟,兩次打印的結果是相同的,因為linux是大小寫敏感的系統。
2,手動刪掉test.txt,然后嘗試執行下邊代碼
public
static
void
test4()
throws
Exception
{
File file
=
new
File(
"
D:\\Text.txt
"
);
System.out.println(file.
getCanonicalPath
());
File file1
=
new
File(
"
D:\\text.txt
"
);
file1.createNewFile();
file
=
new
File(
"
D:\\Text.txt
"
);
System.out.println(file.
getCanonicalPath
());
}
public
static
void
test3()
throws
Exception
{
File file1
=
new
File(
"
D:\\text.txt
"
);
file1.createNewFile();
File file
=
new
File(
"
D:\\Text.txt
"
);
System.out.println(file.
getCanonicalPath
());
}
執行上邊兩個函數,看看結果,然后思考一下為什么?
1,的結果是兩個大寫,
2,的結果試兩個小寫
連續兩個大寫的,是否跟上邊的矛盾 ?
這是因為虛擬機的緩存機制造成的。第一次File file
=
new
File(
"
D:\\Text.txt
"
);決定了結果.
來至javaeye
posted on 2009-03-05 10:17
何克勤
閱讀(250)
評論(0)
編輯
收藏
所屬分類:
J2SE
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
線程中釋放鎖的方式
Java線程
just-in-time編譯器
file的getPath getAbsolutePath和getCanonicalPath的不同
protected訪問權限
關聯、組合、聚合、依賴關系比較
比較分析Vector、ArrayList和hashtable hashmap數據結構
[轉]Java RPC通信機制之RMI
(轉)Java中URI,URL和URN的使用
關于java連接sql server 2000的問題
Copyright ©2025 何克勤 Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
日韩精品无码免费视频
|
午夜精品射精入后重之免费观看
|
区久久AAA片69亚洲
|
国产精品免费无遮挡无码永久视频
|
亚洲神级电影国语版
|
免费国产a国产片高清网站
|
最近免费中文字幕中文高清
|
亚洲国产成人精品无码区在线秒播
|
亚洲熟女综合一区二区三区
|
亚洲无码精品浪潮
|
国产h肉在线视频免费观看
|
无遮挡呻吟娇喘视频免费播放
|
亚洲高清在线视频
|
国产在线98福利播放视频免费
|
WWW免费视频在线观看播放
|
国产精品高清视亚洲精品
|
国产成人亚洲综合无码精品
|
亚洲中文字幕在线乱码
|
无码免费午夜福利片在线
|
a色毛片免费视频
|
久久亚洲精品11p
|
97se亚洲综合在线
|
亚洲伊人成无码综合网
|
四虎免费在线观看
|
精品无码无人网站免费视频
|
一区二区三区在线免费观看视频
|
亚洲一区无码中文字幕乱码
|
国产亚洲人成网站观看
|
免费大香伊蕉在人线国产
|
亚洲精品乱码久久久久久蜜桃不卡
|
精品久久久久久亚洲精品
|
国产亚洲精品观看91在线
|
免费在线视频一区
|
日韩电影免费在线
|
四虎国产精品免费久久
|
99久久精品国产免费
|
三根一起会坏掉的好痛免费三级全黄的视频在线观看
|
亚洲人成影院在线无码按摩店
|
国产一区二区免费在线
|
成人免费一区二区无码视频
|
亚洲视频免费在线看
|