亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用Apache commons IO包規(guī)范文件名

系統(tǒng) 1918 0

【一】Apache commons IO包之FilenameUtils

在使用JDK的File類(lèi)構(gòu)建目錄、文件對(duì)象時(shí),通常會(huì)碰到以下的問(wèn)題:

?①分隔符的問(wèn)題:Unix系統(tǒng)和Windos系統(tǒng)的路徑分隔符、換行符不同
?②路徑規(guī)范的問(wèn)題:有些API對(duì)于返回的目錄路徑不帶"/",有些則有
?③文件名規(guī)范的問(wèn)題:有些文件名中間帶有空格,導(dǎo)致程序解析錯(cuò)誤

上面的問(wèn)題雖然不算復(fù)雜,卻也惱人。有時(shí)候甚至?xí)谶@些問(wèn)題上耗費(fèi)大量的時(shí)間。于是Apache commons io包提供了一個(gè)FilenameUtils類(lèi)來(lái)專(zhuān)門(mén)幫助我們解決這樣的問(wèn)題。根據(jù)Apache common io的說(shuō)法:你可以通過(guò)使用JDK自帶的File類(lèi)構(gòu)造方法File(String parent, String child)來(lái)避免使用這個(gè)類(lèi),但是實(shí)際上這個(gè)類(lèi)還是很有用的!

【二】Apache commons IO包中對(duì)路徑的定義

要了解Apache commons IO包如何處理路徑文件名的問(wèn)題,首先要知道Apache中如何定義關(guān)于路徑的參數(shù):
使用Apache commons IO包規(guī)范文件名
關(guān)于路徑有3個(gè)概念:
?①前綴:盤(pán)符或者根目錄
?②路徑:從前綴或根目錄開(kāi)始直至文件的所在目錄
?③全路徑:包含了前綴和路徑

要注意的是:在A(yíng)pache的所以關(guān)于路徑的概念中,都是以分隔符結(jié)尾的。因?yàn)榘凑誂pache的說(shuō)法,如果沒(méi)有提供分隔符,它將不能正確地識(shí)別路徑代表的是一個(gè)目錄還是一個(gè)文件,在這種情況下只能選擇將其識(shí)別為一個(gè)文件。

關(guān)于文件名也有3個(gè)概念:
?①基本名稱(chēng):不包含路徑和擴(kuò)展名的部分
?②擴(kuò)展名稱(chēng):從.開(kāi)始直至結(jié)束的部分
?③文件名稱(chēng):包含了基本名稱(chēng)和擴(kuò)展名稱(chēng)

要注意的是:擴(kuò)展名并不包含"."

在路徑概念中,前綴是一個(gè)很重要的概念:因?yàn)樗嬖V了程序應(yīng)該從那里開(kāi)始識(shí)別,在A(yíng)pache commons IO包中,使用如下規(guī)則去獲取前綴:
使用Apache commons IO包規(guī)范文件名

【三】常用API

①路徑規(guī)范

首先要介紹的就是normalize方法,這個(gè)方法用于對(duì)各種類(lèi)型的路徑進(jìn)行規(guī)范,它的規(guī)則如下:

A trailing slash will be retained.
A double slash will be merged to a single slash (but UNC names are handled).
A single dot path segment will be removed.
A double dot will cause that path segment and the one before to be removed.
If the double dot has no parent path segment to work with, null is returned


下面是官網(wǎng)上面的一個(gè)例子:
使用Apache commons IO包規(guī)范文件名

要特別注意的是:這個(gè)方法總是會(huì)返回一個(gè)結(jié)尾帶有"/"的路徑,如果你不需要這個(gè)分隔符,那么你可以調(diào)用另外一個(gè)方法:normalizeNoEndSeparator(String filename)。

②路徑的比較

有點(diǎn)時(shí)候我們需要比較兩個(gè)路徑是否代表了同一個(gè)資源,但是由于路徑寫(xiě)法或者API調(diào)用的不同,即便同一個(gè)對(duì)象也有可能返回false的結(jié)果。于是Apache提供了一個(gè)直接簡(jiǎn)便的方法:equals。這個(gè)方法的完整簽名是:

?static boolean equals(String filename1, String filename2,
?????????????????????????????? boolean normalized, IOCase caseSensitivity)

其中normalized參數(shù)表示在比較前是否要進(jìn)行規(guī)范,通常都是true,參數(shù)caseSensitivity表示是否大小寫(xiě)敏感。這個(gè)參數(shù)有3個(gè)可選擇的選項(xiàng),他們分別是:
?※ IOCase.INSENSITIVE
?※ IOCase.SENSITIVE
?※ IOCase.SYSTEM

通常為了移植性我們都會(huì)選擇IOCase.SYSTEM,即根據(jù)系統(tǒng)的類(lèi)型自動(dòng)決定。

③路徑獲取

分為path和full path兩種情況,可用的API有:

?※ getFullPath(String filename)/getFullPathNoEndSeparator(String filename)
?※?getPath(String filename)/getPathNoEndSeparator(String filename)
?
④路徑的截取

包含了對(duì)擴(kuò)展名的位置判斷和分隔符的位置判斷。設(shè)想一下假如現(xiàn)在有這樣的一個(gè)路徑:C:/path/my.file/you.txt

如果我們要獲取擴(kuò)展名,使用indexOf('.'),那么返回的將是錯(cuò)誤的結(jié)果。使用Apache commons IO提供的indexOfExtension(String filename)方法,將會(huì)首先檢查在"."后是否還有"/"分隔符。

該方法內(nèi)部默認(rèn)調(diào)用了另外一個(gè)方法:indexOfLastSeparator(String filename)

⑤文件名的獲取

分為全文件名,基本文件名,擴(kuò)展名。可用的API有:

?※ getName(String filename)
?※ getBaseName(String filename)
?※ getExtension(String filename)

使用Apache commons IO包規(guī)范文件名


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲国产欧美久久香综合 | 欧美成人精品高清在线观看 | 欧美成人猛男性色生活 | 日韩免费视频一区二区 | 欧美成人七十二式性视频教程 | 天天久久综合网站 | 色婷婷综合久久久久中文 | 男女乱淫真视频免费一级毛片 | 亚洲欧美伦理 | 91福利在线观看 | 亚洲国产精品日韩一线满 | 精品伊人久久大香线蕉网站 | 欧美日韩久久 | 九九精品在线观看 | 欧美精品一区二区三区视频 | 免费视频不卡 | 欧美福利精品福利视频在线观看 | 九九亚洲 | 人人狠狠综合久久亚洲婷婷 | 国产高清视频免费 | 久久免视频 | 久插视频 | 久久精品卫校国产小美女 | 精品久久久久久久久久 | 99久久久国产精品免费播放器 | 91亚洲精品久久91 | 日本老熟妇激情毛片 | 日韩中文字幕精品 | 午夜精品久久久久久毛片 | 九九国产精品九九 | 日日噜噜夜夜狠狠久久丁香 | 激情在线播放免费视频高清 | 久久免费视频观看 | 91久久亚洲精品一区二区 | 99精品国产自在现线观看 | 久久精品国产视频 | 狠狠色噜噜狠狠狠狠 | 大片国产片日本观看免费视频 | 久久欧美精品欧美久久欧美 | 99爱在线视频这里只有精品 | 欧美日韩国产成人综合在线影院 |