天天看點

Java擷取目錄下的檔案你知道是用哪個方法嗎

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

總結

❤️ 感謝大家

  1. 歡迎關注我❤️,點贊👍🏻,評論🤤,轉發🙏
  2. 關注

    盼盼小課堂

    ,定期為你推送好文,還有群聊不定期抽獎活動,可以暢所欲言,與大神們一起交流,一起學習。
  3. 有不當之處歡迎批評指正。