一、使用File類獲取文件夾下所有文件
使用File類可以獲取指定文件夾下的所有文件,代碼示例如下:
public static List getAllFiles(File dir) { List fileList = new ArrayList(); if(dir.isDirectory()) { File[] subFiles = dir.listFiles(); if(subFiles != null){ for(File subFile : subFiles) { fileList.addAll(getAllFiles(subFile)); } } } else { fileList.add(dir); } return fileList; }
通過getAllFiles方法獲取到的List實例,裡面包含了指定文件夾下所有的文件,並可以根據需要進行進一步的處理,如遍歷文件夾、獲取文件名、讀取文件內容等。
二、使用Files類獲取文件夾下所有文件
在java.nio.file包中,Files類提供了列出指定目錄下所有文件和目錄的方法,代碼示例如下:
public static List getAllFiles(Path dir) throws IOException { List fileList = new ArrayList(); Files.walkFileTree(dir, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { fileList.add(file); return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFileFailed(Path file, IOException exc) { return FileVisitResult.CONTINUE; } }); return fileList; }
通過Files類可以獲取到Path實例,然後可以像操作File一樣的操作Path實例,如獲取文件名、讀取文件內容等。
三、使用Java8的Stream獲取文件夾下所有文件
在Java8之後,加入了Stream API,可以使用Stream API快速獲取文件夾下所有文件,代碼示例如下:
public static List getAllFiles(Path dir) throws IOException { try(Stream paths = Files.walk(dir)) { return paths.filter(Files::isRegularFile).collect(Collectors.toList()); } }
使用Java8的Stream獲取文件夾下所有文件,代碼更加簡潔,但需要注意的是,由於使用了Lamda表達式和Stream,可能會對性能造成一定影響,需要根據實際情況進行選擇。
四、小結
使用Java獲取文件夾下所有文件主要有三種方式:使用File類、使用Files類和使用Java8的Stream。根據實際情況選擇不同的方式可以更加快速和方便地獲取到文件夾下所有文件。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/151399.html