package com.hz.test;
import java.io.File;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Test {
public static void main(String[] args) {
File file = new File("E:\\相册");
long start = System.currentTimeMillis();
recursion(file);
long end = System.currentTimeMillis();
System.out.println("时间差:"+(end-start));
}
/*
* 1、先将file放入容器
* 2、从容器中获取当前位置的数,判断是否是目录
* 2.1、如果是目录,则将目录下的所有文件,放入容器
* 2.2、如果是文件,则输出
* 3、将下标移动到下一个位置,重复做2号操作
* 4、直到将容器中所有的数据全部输出为止
*/
// public static void recursion(File file) {
//
// List<File> list = new ArrayList<File>();
//
// list.add(file);
//
// int sum = 0;
// for (int i = 0; i <list.size(); i++) {
//
// File file2 = list.get(i);
// if(file2.isDirectory()){
// try {
// List<File> list2 = Arrays.asList(file2.listFiles());
// list.addAll(list2);
//// System.out.println(list);
// } catch (Exception e) {
// e.printStackTrace();
// }
//
// }else{
//
// System.out.println(file2.getAbsolutePath());
// sum++;
//
// }
// }
// System.out.println("总文件数:"+sum);
//
//
// }
//优化方法(广搜)
public static void recursion(File file) {
List<File> list = new LinkedList<File>();
list.add(file);
int sum = ;
for(int i=;i<list.size();){
File file2 = list.get();
if(file2.isDirectory()){
try {
List<File> list2 = Arrays.asList(file2.listFiles());
list.addAll(list2);
} catch (Exception e) {
e.printStackTrace();
}
}else{
System.out.println(file2.getAbsolutePath());
sum++;
}
list.remove();
}
System.out.println("总文件数:"+sum);
}
//递归方法
// public static void recursion(File file) {
//
// List<File> list = Arrays.asList(file.listFiles());
// for (File file2 : list) {
// if(file2.isDirectory()){
// recursion(file2);
// }
// System.out.println(file2);
// }
// }
}