天天看点

File(遍历一个目录下的所有文件)

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);
//      }
//  }

}