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
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
国产精品嫩草影院免费
|
一个人免费观看视频www
|
亚洲电影日韩精品
|
黑人粗长大战亚洲女2021国产精品成人免费视频
|
中文字幕免费观看视频
|
亚洲AV无码成人精品区大在线
|
亚洲看片无码在线视频
|
国产情侣激情在线视频免费看
|
亚洲欧洲春色校园另类小说
|
国产精品入口麻豆免费观看
|
亚洲日本在线电影
|
国产色爽免费视频
|
国产精品99爱免费视频
|
亚洲爆乳无码一区二区三区
|
91香蕉在线观看免费高清
|
亚洲第一成年网站大全亚洲
|
最近中文字幕mv免费高清电影
|
亚洲爆乳无码专区www
|
久久久久亚洲精品中文字幕
|
日本免费久久久久久久网站
|
亚洲成人免费电影
|
国产高清视频在线免费观看
|
久久久受www免费人成
|
亚洲校园春色小说
|
国产亚洲精品免费
|
国产中文字幕在线免费观看
|
亚洲视频免费在线播放
|
免费无码又爽又刺激高潮
|
在线观看黄片免费入口不卡
|
亚洲成年人电影网站
|
国产特级淫片免费看
|
日韩免费高清播放器
|
精品亚洲成A人无码成A在线观看
|
国产成人精品123区免费视频
|
成在线人免费无码高潮喷水
|
www.亚洲日本
|
狠狠综合久久综合88亚洲
|
皇色在线视频免费网站
|
一道本不卡免费视频
|
亚洲avav天堂av在线网爱情
|
亚洲人成无码www久久久
|