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 }