用Java写一个递归遍历目录下面的所有文件

首先,拿到这个题目,我要找java怎样实现文件的读取。

File file = new File(fileName);
我们知道java通过以上代码获取文件目录
File[] files = file.listFiles();
上面代码获取目录下所有子文件和文件夹。
以下是java.io.File.isFile()方法的声明:

public boolean isFile()
参数
NA

返回值
当且仅当表示此抽象路径名的文件是一个文件该方法返回true,否则该方法返回false。

通过isFile()函数可以判断是否为文件。
通过isDirectory()函数可以判断是否为目录。
知道了这些就好办了。
--------------------- 

package com.anji.allways.business.sales.utils;

import java.io.File;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 用递归统计某文件夹下文件
 */
public class FileCount {

    private static AtomicInteger count = new AtomicInteger(0);

    public static void readFile(File file) {
        File[] fileList = file.listFiles();
        if (fileList == null) {
            return;

        }
        for (File f : fileList) {
            if (f.isFile()) {
                count.incrementAndGet();
                System.out.println("文件名" + f.getName());
            }

            if (f.isDirectory()) {
                readFile(f);
            }

        }
    }


    public static void main(String[] args) {
        //取得目标目录
        File file = new File("D:");
        //获取目录下子文件及子文件夹
        File[] files = file.listFiles();
        readfile(files);


        /*File file = new File("D:");
        readFile(file);*/

        System.out.printf("文件总量:" + count);

    }

    public static void readfile(File[] files) {
        if (files == null) {// 如果目录为空,直接退出
            return;
        }
        for (File f : files) {
            //如果是文件,直接输出名字
            if (f.isFile()) {
                count.incrementAndGet();
                System.out.println(f.getName());
            }
            //如果是文件夹,递归调用
            else if (f.isDirectory()) {
                readfile(f.listFiles());
            }
        }
    }

}


作者:75闪光雷 
来源:CSDN 
原文:https://blog.csdn.net/qq_34309305/article/details/79194343 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(算法,递归统计文件夹下文件)