统计文件数量
- 题目描述:给定一个文件目录的路径,编写一个函数统计该目录下所有的文件数量并返回(隐藏文件也算,但文件夹不算)
- 解题思路:
使用深度优先遍历(遍历过程中选用栈作为存储文件或文件夹的容器),遍历之前,先将头文件压栈(栈是否为空作为遍历完所有文件的判断标准),如果当前路径上是文件,计数器加1,如果当前路径上是文件夹,则遍历文件夹中的内容,判断是文件还是文件夹
public class CountFiles {
public static int countFileNum(String folderPath){
File root = new File(folderPath);
if (root.isFile()){
return 1;
}
if (!root.isDirectory() && !root.isFile()){
return 0;
}
int count = 0;
Stack<File> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()){
File cur = stack.pop();
for (File next : cur.listFiles()) {
if (next.isFile()){
count++;
}
if (next.isDirectory()){
stack.push(next);
}
}
}
return count;
}
public static void main(String[] args) {
System.out.println(countFileNum("D:\\study_note"));
System.out.println(countFileNum("D:\\study_note\\HeiMa"));
}
}