使用java8API遍歷過濾文件目錄及子目錄及隱藏文件

1. 使用Files.list()迭代目錄及其子目錄文件

Files.list()能夠迭代目錄及其子目錄文件vue

Files.list(Paths.get("."))   //當前目錄
     .forEach(System.out::println);

輸出:java

.\filename1.txt
.\directory1
.\filename2.txt
.\Employee.java

2. 使用 filter表達式過濾文件

過濾器函數引用,isRegularFile表示普通文件spring

Files.list(Paths.get("."))
        .filter(Files::isRegularFile)  //過濾器:只保留普通文件,過濾掉文件目錄
        .forEach(System.out::println);

輸出結果以下:後端

.\filename1.txt
.\filename2.txt
.\Employee.java

也能夠使用lambda表達式進行過濾springboot

Files.list(Paths.get("."))
        .filter(s -> s.startsWith("file"))  //過濾器:只保留以file開頭的文件及目錄
        .forEach(System.out::println);

3. 使用 Files.newDirectoryStream()迭代目錄及其子目錄文件

另外一種更靈活的遍歷目錄的方式Files.newDirectoryStream(),若是咱們的目錄文件又深又多,DirectoryStream能夠使迭代目錄的速度更快。前後端分離

Files.newDirectoryStream(Paths.get("."))
        .forEach(System.out::println);

輸出結果與Files.list()效果一致函數

.\filename1.txt
.\directory1
.\filename2.txt
.\Employee.java

4. 使用Files.newDirectoryStream()迭代指定文件後綴名的文件

咱們能夠爲Files.newDirectoryStream()傳遞第二個參數,指定過濾條件,好比以java(結尾)爲後綴名的文件微服務

Files.newDirectoryStream(Paths.get("."),
        path -> path.toString().endsWith(".java"))
        .forEach(System.out::println);

Output:

.\Employee.java

5. 遍歷目錄內的隱藏文件

要查找全部隱藏文件,能夠在過濾器中使用lambda表達式file -> file.isHidden()。或者,使用java8的方法引用。spa

final File[] files = new File(".").listFiles(file -> file.isHidden());
//or
final File[] files = new File(".").listFiles(File::isHidden);

歡迎關注個人博客,裏面有不少精品合集

  • 本文轉載註明出處(必須帶鏈接,不能只轉文字):字母哥博客

以爲對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創做動力! 。另外,筆者最近一段時間輸出了以下的精品內容,期待您的關注。code

相關文章
相關標籤/搜索