Java擷取目錄下的檔案你知道是用哪個方法嗎
Java的檔案操作子產品也是一個重要的子產品,當初學Java的檔案操作的時候一頭霧水,覺得很難,現在複盤一下,鞏固一下檔案操作的知識,沒準有新的收獲。那就是從File類開始吧
File
File類是檔案名和目錄路徑名的抽象表示,它是一個檔案集,是以他的執行個體可能是一個目錄也可能是一個檔案,我們可以通過isDirectory()方法來判斷是否為目錄。
list()方法
它的list()方法可以傳回目錄下的檔案清單,以數組的形式傳回,這個方法傳回的數組元素不能保證以特定的順序出現,更不能按照字母順序出現,在使用的時候我們通過
File path = new File(".");
來擷取File對象,.表示的是目前目錄,然後
path.list()
方法擷取目前目錄下的所有檔案,傳回String類型的數組,既然是數組我們可以調用
Arrays.sort()
方法來對這數組排序。
含過濾器參數的list()方法
File類中還有一個含參的list(FilenameFilter filter)方法,它同樣是傳回一個字元串數組,方法的行為與list()方法的行為相同,隻是傳回數組中的字元串必須滿足過濾器,如果這個過濾器參數設定為null的話,表示所有的檔案名字都滿足條件。
FilenameFilter是一個過濾檔案名的接口,它隻有一個方法。
FilenameFilter接口:
public interface FilenameFilter {
boolean accept(File dir, String name);
}
它的accept()方法,也就是滿足條件的話這方法傳回true,名稱滿足過濾器。
對應接口,我們可以定義一個匿名内部類,這裡我們還是不使用匿名内部類了,它的閱讀性不大好,我們實作一下這個接口:
class XppFilter implements FilenameFilter {
private Pattern pattern;
public XppFilter(String regex) {
pattern = Pattern.compile(regex);
}
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
}
這個實作類怎麼使用呢?我們可以通過
path.list(new DirFilter(”.java“))
來過濾目錄下的檔案,檔案名包含.java的通過過濾器,accept()方法傳回true
總結
❤️ 感謝大家
- 歡迎關注我❤️,點贊👍🏻,評論🤤,轉發🙏
- 關注
,定期為你推送好文,還有群聊不定期抽獎活動,可以暢所欲言,與大神們一起交流,一起學習。盼盼小課堂
- 有不當之處歡迎批評指正。