实现读取文件夹下(包括多层子目录)所有文件的文件
1 /** 2 * 实现读取文件夹下(包括子目录)所有文件的文件 3 * 4 * @return 5 */ 6 public static List<File> scanFiles(String path) { 7 // 存放所有文件的集合 8 List<File> fileList = new ArrayList<File>(); 9 // 存放所有文件的集合(包含目录) 10 List<File> filePaths = new ArrayList<File>(); 11 LinkedList<File> list = new LinkedList<File>(); 12 File dir = new File(path); 13 File[] file = dir.listFiles(); 14 15 for (int i = 0; i < file.length; i++) { 16 if (file[i].isDirectory()) { 17 // 把第一层的目录,全部放入链表 18 list.add(file[i]); 19 } 20 filePaths.add(file[i]); 21 } 22 // 循环遍历链表 23 while (!list.isEmpty()) { 24 // 把链表的第一个记录删除 25 File tmp = list.removeFirst(); 26 // 如果删除的目录是一个路径的话 27 if (tmp.isDirectory()) { 28 // 列出这个目录下的文件到数组中 29 file = tmp.listFiles(); 30 if (file == null) {// 空目录 31 continue; 32 } 33 // 遍历文件数组 34 for (int i = 0; i < file.length; ++i) { 35 if (file[i].isDirectory()) { 36 // 如果遍历到的是目录,则将继续被加入链表 37 list.add(file[i]); 38 } 39 filePaths.add(file[i]); 40 } 41 } 42 } 43 // 去除文件夹,只保留文件 44 if (null != filePaths && filePaths.size()>0) { 45 for (File tempFile : filePaths) { 46 if (tempFile.isFile()) { 47 fileList.add(tempFile); 48 } 49 } 50 } 51 return fileList; 52 }