/** * 深度搜索遍历文件夹 * * @param dirPath * @param list */ public static void dfsListFile(String dirPath, List<String> list) { File file = new File(dirPath); File[] files = file.listFiles(); for (File tmpFile : files) { if (tmpFile.isDirectory()) { dfsListFile(tmpFile.getAbsolutePath(), list); } else { list.add(tmpFile.getAbsolutePath()); } } } /** * 广度搜索遍历文件夹 * * @param dirPath * @param list */ public static void bfsListFile(String dirPath, List<String> list) { File file = new File(dirPath); File[] fs = file.listFiles(); Queue<File> queue = new LinkedList<>(); // 遍历第一层 for (File f : fs) { // 把第一层文件夹加入队列 if (f.isDirectory()) queue.offer(f); else list.add(f.getAbsolutePath()); } // 逐层搜索下去 while (!queue.isEmpty()) { // 从队列头取一个元素 File fileTemp = queue.poll(); File[] fileListTemp = fileTemp.listFiles(); for (File f : fileListTemp) { if (f.isDirectory()) queue.offer(f); else list.add(f.getAbsolutePath()); } } }