一 . 递归获取当前路径下的所有文件, 包含所有子文件夹下的文件:
package com.ncy.xx; import java.io.File; import java.util.ArrayList; import java.util.List; /** * 文件查找 * @author NCY * */ public class ListFiles { /** * @Title: getallfile * @Description: 获取当前路径下的所有文件 * @author ruby * @return void 返回类型 * @date 2018年1月4日 下午2:15:38 @throws */ public static List<File> getallfile(String path) { List<File> allfilelist = new ArrayList<File>(); return getallfile(new File(path), allfilelist); } /** * @Title: getallfile * @Description: 获取当前文件夹下的所有文件 * @author ruby * @return void 返回类型 * @date 2018年1月4日 下午2:15:38 @throws */ public static List<File> getallfile(File file, List<File> allfilelist) { if (file.exists()) { //判断文件是否是文件夹,如果是,开始递归 if (file.isDirectory()) { File f[] = file.listFiles(); for (File file2 : f) { getallfile(file2, allfilelist); } } else { allfilelist.add(file); } } return allfilelist; } public static void main(String[] args) { List<File> list = getallfile("D:\z"); for (File file : list) { System.out.println(file.getCanonicalPath()); } } }
输出为:
D:zzzfile1.txt
D:zzzfile2.txt
D:zzzfile新建文件夹1.txt
D:zzzfile新建文件夹2.txt
D:zzz新建文件夹1.txt
D:zzz新建文件夹2.txt
二 . 递归计算文件数量
package com.ncy.test; import java.io.File; /** * 递归计算文件数量 * @author NCY * */ public class DirTest{ public static int getCountFile(File file){ if (file.isDirectory()) { int countFile = 0; File[] files = file.listFiles(); for (File f : files) { countFile += getCountFile(f); } return countFile; }else if (file.isFile()) { return 1; } return 0; } public static void main(String[] args) { File file = new File("D:/z"); int countFile = getCountFile(file); System.out.println(countFile); } }
输出为 :
6