Java查询目录下的所有文件(包括子目录)
目录图:
方法代码:
/** * 读取目录下的所有文件 * * @param dir * 目录 * @param fileNames * 保存文件名的集合 * @return */ public static void findFileList(File dir, List<String> fileNames) { if (!dir.exists() || !dir.isDirectory()) {// 判断是否存在目录 return; } String[] files = dir.list();// 读取目录下的所有目录文件信息 for (int i = 0; i < files.length; i++) {// 循环,添加文件名或回调自身 File file = new File(dir, files[i]); if (file.isFile()) {// 如果文件 fileNames.add(dir + "\\" + file.getName());// 添加文件全路径名 } else {// 如果是目录 findFileList(file, fileNames);// 回调自身继续查询 } } }
测试代码:
public static void main(String[] args) throws Exception { List<String> fileNames = new ArrayList<String>(); FileUtil.findFileList(new File("F:\\HTML\\bootstrap"),fileNames ); System.out.println(); for (String value : fileNames) { System.out.println("file:"+value); } }
整个类FileUtil.java:
public class FileUtil { public static void main(String[] args) throws Exception { List<String> fileNames = new ArrayList<String>(); FileUtil.findFileList(new File("F:\\HTML\\bootstrap"),fileNames ); System.out.println(); for (String value : fileNames) { System.out.println("file:"+value); } } /** * 读取目录下的所有文件 * * @param dir * 目录 * @param fileNames * 保存文件名的集合 * @return */ public static void findFileList(File dir, List<String> fileNames) { if (!dir.exists() || !dir.isDirectory()) {// 判断是否存在目录 return; } String[] files = dir.list();// 读取目录下的所有目录文件信息 for (int i = 0; i < files.length; i++) {// 循环,添加文件名或回调自身 File file = new File(dir, files[i]); if (file.isFile()) {// 如果文件 fileNames.add(dir + "\\" + file.getName());// 添加文件全路径名 } else {// 如果是目录 findFileList(file, fileNames);// 回调自身继续查询 } } } }
结果图: