Path的兩種初始化(應該還有別的方式)
Path file = new File(path).toPath();
Paths.get
判斷是文件、是目錄
Files.isRegularFile(file)
Files.isDirectory(file)
javadoc說,還有既不是文件也不是目錄的情況
Files.find
通過屬性和路徑篩選,可以篩選是文件,而路徑匹配 PathMatcher 樣式的。深度可以指定 integer max,無盡深度,或者限定1、2級深度。
PathMatcher 通過 FileSystem.getPathMatcher(String syntaxAndPattern) 獲取。按javadoc介紹,有glob和regex兩種方式。使用了glob的,沒有使用regex的。 glob的支持 {*.gz,*.json} 這樣的匹配方式。
還有 Files.walk, directorystream的api調用。這三個api可以遍歷目錄樹,比file listfiles手寫遞歸用高效多了。
返回的流,可以使用skip、limit,進行分頁,然后調用foreach,對結果遍歷處理。