Tinysun
BlogJava
首頁
新隨筆
新文章
聯(lián)系
聚合
管理
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)
給我留言
查看公開留言
查看私人留言
我參與的團(tuán)隊(duì)
ica推薦系統(tǒng)(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相關(guān)(1)
其他(9)
數(shù)據(jù)庫和SQL (10)
新技術(shù)新概念(1)
設(shè)計(jì)模式(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++ 社區(qū)
artima developer
C plus plus
drdobbs
Lippman
常用網(wǎng)站
CodeProject
VC知識庫
搜索
最新評論
1.?re: vi使用技巧(二):copy,paste,delete,塊編輯,redo/undo
學(xué)無止境。
--jtony
2.?re: 中英文網(wǎng)頁中雙語語料的挖掘
你的軟件賣嗎?請加我qq
:1679461908
--tm
3.?re: 中英文網(wǎng)頁中雙語語料的挖掘
可否加我,qq: 1679461908
--tm
4.?re: 中文分詞免費(fèi)源碼資源
中文分詞免費(fèi)源碼資源
--8888
5.?re: 全文檢索的基本原理
懂點(diǎn)了。
人工智能
--謝謝分享
閱讀排行榜
1.?大端法、小端法、網(wǎng)絡(luò)字節(jié)序 轉(zhuǎn)(31371)
2.?均方根值(RMS)、均方根誤差(RMSE)、各種平均值 (17122)
3.?vi使用技巧(二):copy,paste,delete,塊編輯,redo/undo(12340)
4.?MFC下關(guān)于“建立空文檔失敗”問題的分析(轉(zhuǎn)載)(9120)
5.?linux下which、whereis、locate、find 命令的區(qū)別(5141)
評論排行榜
1.?PL/X編譯器設(shè)計(jì)與實(shí)現(xiàn)(9)
2.?利用牛頓迭代法求平方根(轉(zhuǎn))(4)
3.?中英文網(wǎng)頁中雙語語料的挖掘(3)
4.?全文檢索的基本原理(1)
5.?用戶態(tài)非搶占式線程庫實(shí)現(xiàn) (轉(zhuǎn))(1)
file的getPath getAbsolutePath和getCanonicalPath的不同
file的這幾個(gè)取得path的方法各有不同,下邊說說詳細(xì)的區(qū)別
概念上的區(qū)別:(內(nèi)容來自jdk,個(gè)人感覺這個(gè)描述信息,只能讓明白的人明白,不明白的人看起來還是有點(diǎn)難度(特別試中文版,英文版稍好些)所以在概念之后我會舉例說明。如果感覺看概念很累就跳過直接看例子吧。看完例子回來看概念會好些。
getPath
public
String getPath()將此抽象路徑名轉(zhuǎn)換為一個(gè)路徑名字符串。所得到的字符串使用默認(rèn)名稱分隔符來分隔名稱序列中的名稱。
返回:
此抽象路徑名的字符串形式
getAbsolutePath
public
String getAbsolutePath()返回抽象路徑名的絕對路徑名字符串。
如果此抽象路徑名已經(jīng)是絕對路徑名,則返回該路徑名字符串,這與 getPath() 方法一樣。如果此抽象路徑名是空的抽象路徑名,則返回當(dāng)前用戶目錄的路徑名字符串,該目錄由系統(tǒng)屬性 user.dir 指定。否則,使用與系統(tǒng)有關(guān)的方式分析此路徑名。在 UNIX 系統(tǒng)上,通過根據(jù)當(dāng)前用戶目錄分析某一相對路徑名,可使該路徑名成為絕對路徑名。在 Microsoft Windows 系統(tǒng)上,通過由路徑名指定的當(dāng)前驅(qū)動(dòng)器目錄(如果有)來分析某一相對路徑名,可使該路徑名成為絕對路徑名;否則,可以根據(jù)當(dāng)前用戶目錄來分析它。
返回:
絕對路徑名字符串,它與此抽象路徑名表示相同的文件或目錄的
拋出:
SecurityException
-
如果無法訪問所需的系統(tǒng)屬性值。
另請參見:
isAbsolute()
getCanonicalPath
public
String
getCanonicalPath
()
throws
IOException返回抽象路徑名的規(guī)范路徑名字符串。
規(guī)范路徑名是絕對路徑名,并且是惟一的。規(guī)范路徑名的準(zhǔn)確定義與系統(tǒng)有關(guān)。如有必要,此方法首先將路徑名轉(zhuǎn)換成絕對路徑名,這與調(diào)用 getAbsolutePath() 方法的效果一樣,然后用與系統(tǒng)相關(guān)的方式將它映射到其惟一路徑名。這通常涉及到從路徑名中移除多余的名稱(比如
"
.
"
和
"
..
"
)、分析符號連接(對于 UNIX 平臺),以及將驅(qū)動(dòng)器名轉(zhuǎn)換成標(biāo)準(zhǔn)大小寫形式(對于 Microsoft Windows 平臺)。
表示現(xiàn)有文件或目錄的每個(gè)路徑名都有一個(gè)惟一的規(guī)范形式。表示非存在文件或目錄的每個(gè)路徑名也有一個(gè)惟一的規(guī)范形式。非存在文件或目錄路徑名的規(guī)范形式可能不同于創(chuàng)建文件或目錄之后同一路徑名的規(guī)范形式。同樣,現(xiàn)有文件或目錄路徑名的規(guī)范形式可能不同于刪除文件或目錄之后同一路徑名的規(guī)范形式。
返回:
表示與此抽象路徑名相同的文件或目錄的規(guī)范路徑名字符串
拋出:
IOException
-
如果發(fā)生 I
/
O 錯(cuò)誤(可能是因?yàn)闃?gòu)造規(guī)范路徑名需要進(jìn)行文件系統(tǒng)查詢)
SecurityException
-
如果無法訪問所需的系統(tǒng)屬性值,或者存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒絕對該文件進(jìn)行讀取訪問
從以下版本開始:
JDK1.
1
二、例子:
1,getPath()與getAbsolutePath()的區(qū)別
public
static
void
test1()
{
File file1
=
new
File(
"
.\\test1.txt
"
);
File file2
=
new
File(
"
D:\\workspace\\test\\test1.txt
"
);
System.out.println(
"
-----默認(rèn)相對路徑:取得路徑不同------
"
);
System.out.println(file1.getPath());
System.out.println(file1.getAbsolutePath());
System.out.println(
"
-----默認(rèn)絕對路徑:取得路徑相同------
"
);
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
}
得到的結(jié)果:
-----
默認(rèn)相對路徑:取得路徑不同
------
.\test1.txt
D:\workspace\test\.\test1.txt
-----
默認(rèn)絕對路徑:取得路徑相同
------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
因?yàn)間etPath()得到的是構(gòu)造file的時(shí)候的路徑。
getAbsolutePath()得到的是全路徑
如果構(gòu)造的時(shí)候就是全路徑那直接返回全路徑
如果構(gòu)造的時(shí)候試相對路徑,返回當(dāng)前目錄的路徑+構(gòu)造file時(shí)候的路徑
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
());
}
得到的結(jié)果
D:\workspace\test\..\src\test1.txt
D:\workspace\src\test1.txt
可以看到CanonicalPath不但是全路徑,而且把..或者.這樣的符號解析出來。
3,
getCanonicalPath
()和自己的不同。
就是解釋這段話:
表示現(xiàn)有文件或目錄的每個(gè)路徑名都有一個(gè)惟一的規(guī)范形式。表示非存在文件或目錄的每個(gè)路徑名也有一個(gè)惟一的規(guī)范形式。非存在文件或目錄路徑名的規(guī)范形式可能不同于創(chuàng)建文件或目錄之后同一路徑名的規(guī)范形式。同樣,現(xiàn)有文件或目錄路徑名的規(guī)范形式可能不同于刪除文件或目錄之后同一路徑名的規(guī)范形式。
單下邊這段代碼是看不到結(jié)果的,要配合一定的操作來看。下邊操作步驟,同時(shí)講解
public
static
void
test3()
throws
Exception
{
File file
=
new
File(
"
D:\\Text.txt
"
);
System.out.println(file.
getCanonicalPath
());
}
步驟:
確定你的系統(tǒng)是Windows系統(tǒng)。
(1),確定D盤下沒有Text.txt這個(gè)文件,直接執(zhí)行這段代碼,得到的結(jié)果是:
D:\Text.txt
注意這里試大寫的Text.txt
(2)在D盤下建立一個(gè)文件,名叫text.txt,再次執(zhí)行代碼,得到結(jié)果
D:\text.txt
同樣的代碼得到不同的結(jié)果。
同時(shí)可以對比getAbsolutePath()看看,這個(gè)得到的結(jié)果是一樣的。
原因:
window是大小寫不敏感的,也就是說在windows上test.txt和Test.txt是一個(gè)文件,所以在windows上當(dāng)文件不存在時(shí),得到的路徑就是按照輸入的路徑。但當(dāng)文件存在時(shí),就會按照實(shí)際的情況來顯示。這也就是建立文件后和刪除文件后會有不同的原因。文件夾和文件類似。
三、最后:
1,嘗試在linux下執(zhí)行上邊的步驟,兩次打印的結(jié)果是相同的,因?yàn)閘inux是大小寫敏感的系統(tǒng)。
2,手動(dòng)刪掉test.txt,然后嘗試執(zhí)行下邊代碼
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
());
}
執(zhí)行上邊兩個(gè)函數(shù),看看結(jié)果,然后思考一下為什么?
1,的結(jié)果是兩個(gè)大寫,
2,的結(jié)果試兩個(gè)小寫
連續(xù)兩個(gè)大寫的,是否跟上邊的矛盾 ?
這是因?yàn)樘摂M機(jī)的緩存機(jī)制造成的。第一次File file
=
new
File(
"
D:\\Text.txt
"
);決定了結(jié)果.
來至javaeye
posted on 2009-03-05 10:17
何克勤
閱讀(250)
評論(0)
編輯
收藏
所屬分類:
J2SE
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
線程中釋放鎖的方式
Java線程
just-in-time編譯器
file的getPath getAbsolutePath和getCanonicalPath的不同
protected訪問權(quán)限
關(guān)聯(lián)、組合、聚合、依賴關(guān)系比較
比較分析Vector、ArrayList和hashtable hashmap數(shù)據(jù)結(jié)構(gòu)
[轉(zhuǎn)]Java RPC通信機(jī)制之RMI
(轉(zhuǎn))Java中URI,URL和URN的使用
關(guān)于java連接sql server 2000的問題
Copyright ©2025 何克勤 Powered By
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
亚洲熟伦熟女新五十路熟妇
|
成人亚洲国产va天堂
|
国产美女在线精品免费观看
|
麻豆亚洲AV成人无码久久精品
|
青青操视频在线免费观看
|
亚洲天堂男人天堂
|
四虎在线视频免费观看
|
成人A毛片免费观看网站
|
亚洲综合一区二区精品久久
|
日韩免费三级电影
|
免费人成在线观看网站品爱网
|
免费无遮挡无遮羞在线看
|
久久亚洲私人国产精品vA
|
亚洲av乱码一区二区三区香蕉
|
亚洲国产精品自产在线播放
|
91香蕉国产线观看免费全集
|
亚洲a∨无码精品色午夜
|
亚洲av日韩综合一区在线观看
|
在线观看成人免费
|
亚洲欧洲免费视频
|
特级av毛片免费观看
|
亚洲制服丝袜一区二区三区
|
亚洲女同成av人片在线观看
|
日本特黄特色aa大片免费
|
无码人妻一区二区三区免费看
|
免费看一级一级人妻片
|
亚洲成aⅴ人片在线影院八
|
亚洲一区二区三区无码中文字幕
|
成人毛片视频免费网站观看
|
久久久久国色av免费看
|
午夜两性色视频免费网站
|
免费无遮挡无码永久视频
|
先锋影音资源片午夜在线观看视频免费播放
|
亚洲精品无码久久久影院相关影片
|
日韩精品福利片午夜免费观着
|
免费人成毛片动漫在线播放
|
黄网站色成年片大免费高清
|
亚洲国产AV一区二区三区四区
|
亚洲婷婷天堂在线综合
|
日韩va亚洲va欧洲va国产
|
亚洲福利在线播放
|