六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Java咖啡館——一個壓縮歸檔實(shí)用軟件(2)

[摘要]1.File類  Java中是通過File類來存取文件和路徑的。沒錯,這是一個非常容易混淆的名字,你可能認(rèn)為它僅僅能夠處理文件,實(shí)際上它既可以代表了一個特定的文件,又可以代表某個文件夾內(nèi)的文件名列表。如果它是文件,你可以通過length()方法獲取它的大小、通過lastModified()方法最后...

    

  1.File類

  Java中是通過File類來存取文件和路徑的。沒錯,這是一個非常容易混淆的名字,你可能認(rèn)為它僅僅能夠處理文件,實(shí)際上它既可以代表了一個特定的文件,又可以代表某個文件夾內(nèi)的文件名列表。如果它是文件,你可以通過length()方法獲取它的大小、通過lastModified()方法最后修改時間,等等;如果它代表文件名列表,則可以用list()得到表示文件名列表的字符串?dāng)?shù)組,或者用listFiles()方法得到表示子文件列表的File數(shù)組。總之,在Java中文件夾和文件已經(jīng)被統(tǒng)一成一個抽象的概念,只要了解它的原理,使用起來將會感到非常方便。

  2.文件過濾

  我們說過,F(xiàn)ile類的listFiles()方法可以得到表示子文件列表的File數(shù)組,如果僅僅想要得到特定的子文件而過濾掉其他的文件,則可以給listFiles()方法加上參數(shù)??一個過濾器。
所謂的過濾器,就是一個實(shí)現(xiàn)FilenameFilter接口的Java類。所謂接口(interface),就是僅僅定義了行為協(xié)議,所有聲明實(shí)現(xiàn)這個接口的類必須具體實(shí)現(xiàn)這個接口的行為。換句話說,接口是一種契約,比如這里FilenameFilter的定義是這樣子的:

public interface FilenameFilter {
    boolean accept(File dir, String name);
}

  我們要得到某個File類的所有子文件夾,過濾器FolderFilter類可以這么寫:

class FolderFilter implements FilenameFilter {
  public boolean accept(File dir, String name) {
    return new File(dir + "\\" + name).isDirectory();
  }
}

  你看,F(xiàn)olderFilter類通過implements表示對FilenameFilter接口的支持,然后實(shí)現(xiàn)了這個接口的accept方法。具體地,在accept方法中,通過傳入的dir參數(shù)和name參數(shù)新建一個File實(shí)例,然后通過調(diào)用isDirectory()方法判斷這個實(shí)例是否是文件夾,是則返回True,否則返回False。

  注意到這個方法必須和FilenameFilter接口里面聲明的一模一樣。正因?yàn)槿绱耍看问謩虞斎虢涌诼暶骷嚷闊┯秩菀壮鲥e。還是讓Eclipse干體力活吧!打開Eclipse,新建一個類,名字為FolderFilter,按下Interfaces文本列表右邊的Add按鈕,在彈出的對話框中輸入FilenameFilter即可。實(shí)際上,Eclipse會根據(jù)你的輸入進(jìn)行篩選,非常聰明(見圖1)。

Java咖啡館——一個壓縮歸檔實(shí)用軟件(2)


  別忘記只在Inherited abstract methods前面打勾。最后按下Finish,F(xiàn)olderFilter便創(chuàng)建好了,請根據(jù)上文補(bǔ)足代碼。

  假設(shè)path是一個File類的實(shí)例,我們便可以通過File[] subFolders = path.listFiles(new FolderFilter())得到path的子文件夾列表了。

  這就是接口的使用。加上前兩次我們講解的Java語言中關(guān)于封裝、繼承和多態(tài)的知識,Java面向?qū)ο缶幊叹突局v完了。

  3.過濾器原理

  或許你會覺得過濾文件夾還要手動編寫一個類,實(shí)在是太麻煩了。實(shí)則不然。
給listFiles()參數(shù)提供一個實(shí)現(xiàn)FilenameFilter接口的類的實(shí)例,惟一目的就是讓listFiles()反過來調(diào)用作為參數(shù)的實(shí)例的accept方法。仔細(xì)體會一下這句繞口令,真是意味深長啊。這意味著你可以把任何實(shí)現(xiàn)FilenameFilter接口的類的實(shí)例當(dāng)作參數(shù)傳遞,甚至是在運(yùn)行時動態(tài)改變,從而使得程序更加靈活。而且,如果你要加入更多的過濾器,寫額外的類就可以了,完全不需要修改原先的過濾器,這種動態(tài)策略的思想就是一種Strategy模式的體現(xiàn)





主站蜘蛛池模板: 日本三级香港三级三级人!妇久 | 四虎8848精品永久在线观看 | 日本系列第一页 | 一a一级片 | 亚洲第一成人在线 | 香蕉网站在线 | 夜色综合| 亚欧成人一区二区 | 羞羞色院91网站 | 五月婷婷综合色 | 在线亚洲精品自拍 | 在线观看国产日韩 | 欧美亚洲国产视频 | 在线免费视频你懂的 | 四虎影库在线播放 | 亚洲欧美日韩成人网 | 亚洲精品123区在线观看 | 色偷偷影院 | 三级黄色免费 | 亚洲综合九九 | 天天干天天玩天天操 | 欧美一级黄色片视频 | 日韩女人毛片在线播放 | 亚洲成a人v欧美综合天堂下载 | 日本韩国视频在线观看 | 青春草a∨在线观看免费app | 色综合久久88中文字幕 | 午夜爱爱爱爱爽爽爽网站免费 | 亚洲伦乱 | 青青草原在线免费观看视频 | 一区二区视频在线播放 | 色吊丝国产永久免费网址 | 一道本在线 | 日韩第六页 | 一本dao | 一二三四日本高清免费看 | 天天操天天透 | 亚洲一级免费毛片 | 亚洲天堂视频在线免费观看 | 午夜亚洲福利 | 视频麻豆|