统计目录下的文件数量
Posted 小卢要刷力扣题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计目录下的文件数量相关的知识,希望对你有一定的参考价值。
文章目录
统计目录下的文件数量
给定一个文件目录的路径,
写一个函数统计这个目录下所有的文件数量并返回
隐藏文件也算,但是文件夹不算
一、深度优先搜索
用找做
根目录入栈栈中弹出一个目录,它下面有,e,f两个目录,先压e,后压f,
接下来f弹出,下级只有j,没有文件,
接下来e弹出,e下只有两个文件, count++变成6,
接下来h弹出,有一个文件count++,变成7个文件
public static int getFileNumber(String folderPath)
File root = new File(folderPath);
if (!root.isDirectory() && !root.isFile())
return 0;
if (root.isFile())
return 1;
Stack<File> stack = new Stack<>();
stack.add(root);
int files = 0;
while (!stack.isEmpty())
File folder = stack.pop();
for (File next : folder.listFiles())
if (next.isFile())
files++;
if (next.isDirectory())
stack.push(next);
return files;
二、宽度优先遍历
准备一个队列从头进从尾出,
比如A这个文件夹,放入队列里
1)从队列里弹出一个东西,弹出的文件夹叫current,展开的过程中来的宽度优先遍历是文件的count++,如果遇到了文件夹,放入队列里去,又遇到文件夹,放入队列里去宽度有限遍历过程中遇到的文件就直接count++,往队列里只放文件夹
2)遇到文件就count++,遇到文件夹就往队列里放周而复始结束
public static int getFileNumber2(String folderPath)
File root = new File(folderPath);
if (!root.isDirectory() && !root.isFile())
return 0;
if (root.isFile())
return 1;
LinkedList<File> queue = new LinkedList<File>();
queue.add(root);
int files = 0;
while (!queue.isEmpty())
File folder = queue.poll();
for (File next : folder.listFiles())
if (next.isFile())
files++;
if (next.isDirectory())
queue.add(next);
return files;
以上是关于统计目录下的文件数量的主要内容,如果未能解决你的问题,请参考以下文章