FileUtil.java
import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.LinkedList; import java.util.List; public class FileUtil { public static void main(String[] args) { List<File> list = getFileList("c:/fakepath/", true); System.out.println(list.size()); } public static List<File> getFileList(String path, boolean isSortDesc) { List<File> list = getFileList(path); if (isSortDesc) { list.sort(Comparator.comparing(File::getAbsolutePath)); } else { list.sort((f1, f2) -> f2.getAbsolutePath().compareTo(f1.getAbsolutePath())); } return list; } public static List<File> getFileList(String path) { List<File> rsList = new ArrayList<>(); if (path == null || path.equals("")) { System.out.println("Error: path is blank."); return rsList; } File file = new File(path); if (!file.exists()) { System.out.println("Error: path is not existed."); return rsList; } // 处理文件 if (file.isFile()) { System.out.println("Info: Only has a file."); rsList.add(file); return rsList; } // 处理文件夹 if (null == file.listFiles()) { System.out.println("Info: Only has a empty directory."); rsList.add(file); return rsList; } int fileNum = 0; int folderNum = 0; LinkedList<File> forDealList = new LinkedList<>(); forDealList.addAll(Arrays.asList(file.listFiles())); while (!forDealList.isEmpty()) { File firstFile = forDealList.removeFirst(); // 把文件自身先加入结果 rsList.add(firstFile); // 处理文件 if (firstFile.isFile()) { // System.out.println("文件:" + firstFile.getAbsolutePath()); fileNum++; continue; } // 处理文件夹 folderNum++; // System.out.println("文件夹:" + firstFile.getAbsolutePath()); File[] files = firstFile.listFiles(); if (files == null) { continue; } for (File curr : files) { if (curr.isDirectory()) { // 将此文件夹放入待处理列表 forDealList.add(curr); } else { rsList.add(curr); // System.out.println("文件:" + curr.getAbsolutePath()); fileNum++; } } } System.out.println("文件夹数量:" + folderNum + ",文件数量:" + fileNum); return rsList; } }
le.li
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能