递归<二> --- 遍历指定目录下所有文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kyle0349/article/details/51836491

1、递归定义
参考:http://blog.csdn.net/kyle0349/article/details/51836198
2、对于递归遍历文件夹目录下的文件思路:

 A、如果该文件目录下全是文件(非文件夹),那很理想,直接打印绝对路径(file.getAbsolutePath())就完成任务

 B、重点在于如果该文件目录下有的是文件,有的是文件夹(子文件夹),然后子文件夹也存在相同问题,
     判断是文件还是文件夹,或者可以认为:如果是文件就不是文件夹,或者:如果是文件夹,就不是文件
         file.isFile()   /   file.isDirectory()

 C、判断完后,如果是文件,那么打印绝对路径(file.getAbsolutePath())就完成任务
          如果不是文件(也就是文件夹)呢,就重新调用自身showAllFiles(File folder),因为这个方法就是用来对付文件夹的,

(脑补:只要遇到文件夹就双击进该文件夹,进行判断,是文件,输出,不是双击进去…重复…重复)

package cn.test;

import java.io.File;

/**
 * 递归遍历文件夹下所有文件
 * @author admin
 *
 */
public class Recursion2 {

    static int count = 0 ;

    public static void main(String[] args) {
        //确定目标路径
        File folder = new File("d:/");
        if(!folder.exists() || !folder.isDirectory()){
            System.out.println("文件夹路径错误,文件夹不存在 ,或者该路径不是一个合法的文件夹");
        }else{
            showAllFiles(folder);
        }

    }

    private static void showAllFiles(File folder) {
        File[] files = folder.listFiles();
        for(File file:files){
            if(file.isFile()){
                count ++; //记录文件个数
                System.out.println(file.getAbsolutePath());//输出文件的绝对路径:包含文件名
                System.out.println("文件数:"+count);
            }else{
                try {
                    showAllFiles(file);//如果是文件夹,则调用自身showAllFiles(File folder)来把该文件夹目录下文件显示出来
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/kyle0349/article/details/51836491