统计文件夹下所有文件数量--深度优先遍历(java)

265 篇文章 2 订阅
235 篇文章 0 订阅

统计文件夹下所有文件数量

给定一个文件目录的路径,写一个函数统计这个目录下所有的文件数量并返回,隐藏文件也算,但是文件夹不算

解题思路

深度优先遍历,如果是文件就统计数量,是文件夹就加到栈中,然后不断弹出,然后进行遍历统计.

代码演示

    /**
     * 深度优先遍历
     * 计算文件夹下所有文件数量,文件夹不统计
     * @param path
     * @return
     */
    public static int countFiles(String path){
        File file = new File(path);
        if (file.isFile()){
            return 1;
        }
        //用stack 把文件压入栈中.进行深度优先遍历
        Stack<File> stack = new Stack<>();
        stack.push(file);
        //记录文件数量
        int ans = 0;
        while (!stack.isEmpty()){
            File cur = stack.pop();
            for (File f : cur.listFiles()){
                    //文件进行统计
                    if (f.isFile()){
                        ans++;
                    }
                    //文件夹压入栈中,进行深度优先遍历
                    if (f.isDirectory()){
                        stack.push(f);
                    }
                }

        }
        return ans;
    }

往期经典算法

leetcode2385. 感染二叉树需要的总时间

leetcode222. 完全二叉树的节点个数

滑动窗口最大值的更新结构

leetcode199. 二叉树的右视图

将数组分成两个数组,并最小化数组和的差II

将数组分成两个数组,并最小化数组和的差

leetcode337. 打家劫舍 III

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值