问题场景:
我们日常的生活中在创建文件时,是文件夹中夹杂着各种问价或许还有嵌套文件夹,若某一天我们需要统计某种文件时,那我们应该如何解决呢?
若不清楚那就继续以下内容吧
问题描述:
统计某种文件时,去一个一个数是及其麻烦的,假若一个文价没有嵌套文价夹,那可以去数(在文件数量小的情况下),若是一个文件夹一个文件夹慢慢去统计那得多废时间,因此有了以下的内容——获取文件夹下的TXT文件为例
此时就需要用到我们的递归函数(什么是递归函数呢那就去这里吧 --> 递归函数-阶乘)
思路分析:
首先我们得定义一个变量存储文件的个数 ----1
其次我们得判断这个文件夹是否为空,若为空了就不必去统计了,若不为空则继续进行判断传入的文件是一个文件还是文件夹。—2
若是文件夹,获取文件夹的名字,判断是否以“.txt”结尾,若是则变量加1;—3
若是文件夹,还得继续获取文件夹下的所有文件(用List存),再用集合中的每一个文件去进行判断(进入1),依次循环(递归函数思维)
实例代码:
上代码 ---egm、egm.......: //创建一个文件,文件的路径为需要查询文件的路径
File file = new File("C:"+File.separator +"javaEclipseTest");
//调用countFiles方法
int countFile = countFiles(file);
System.out.println(countFile);
}
//定义一个统计文件的方法
public static int countFiles(File file) {
int count = 0;//定义一个变量存储文件个数
if(file != null) {//判断文件是否为空
if(file.isFile()) {//判断文件是否是文件
if (file.getName().endsWith(".txt")) {//获取文件名,判断文件是否以".txt"结尾
count++;//若是则自增
}
}if(file.isDirectory()) {//判断文件是否是文件夹
File[] listFiles = file.listFiles();//获取文件夹下的所有文件用list存
for (File file2 : listFiles) {//遍历每个文件
count = count + countFiles(file2);//递归思想,再进行文件的判断
}
}
}
return count;//返回计数值
}
总结
每日一题,我最棒!!!!!!!
奥里给!!!!!!
冲、冲、冲…