A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

3. 统计D盘下每个文件夹中.txt文件的个数(包括子文件里的文件),
  然后将文件夹名称以及该文件夹里.txt文件个数存入到合适的集合中,并遍历该集合,
  打印方式如下:(12分)
  XXX文件夹(父文件夹名称即可)——有X个.txt文件(包括子文件夹里的txt文件个数)
  比如:
  a文件夹——有12个.txt文件 d文件夹——有6个.txt文件



6 个回复

倒序浏览
用IO流配合递归做即可
回复 使用道具 举报
public static void main(String[] args) {
  File dir = new File("D:\\");
  //将D盘下的文件存到集合数组中
  File[] subFiles = dir.listFiles();
  //定义一个map集合
  HashMap<String, Integer> hm = new HashMap<>();
  
  //便利数组
  for (File file : subFiles) {
   //判断获得的文件是否为文件夹
    if(file.isDirectory()) {
    hm.put(file.getName(), getNum(file));
   }
  }
  for (String key : hm.keySet()) {
   Integer value = hm.get(key);
   System.out.println(key + "文件夹——有" + value +"个.txt文件");
  }
}

/* * 定义方法获取文件夹下的.txt文件个数
  * 返回值类型int
  * 参数File file
  */
private static int getNum(File file) {
  File[] arr = file.listFiles();
  int count = 0;
  if(arr != null) {
   for (File f : arr) {   
    if(f.isFile()) {
     if(f.getName().endsWith(".txt")) {
      count++;
     }
    }else {
     count = count + getNum(f);
    }
   }
  }
  return count;
}

}

评分

参与人数 1技术分 +1 收起 理由
噜噜吧 + 1

查看全部评分

回复 使用道具 举报
xianghui0521 发表于 2016-9-28 23:17
public static void main(String[] args) {
  File dir = new File("D:\\");
  //将D盘下的文件存到集合数 ...

好使了,还没报错,大神谢谢啦! 我有时间得好好看看
回复 使用道具 举报
IO流配合递归,listfile获取文件,匹配endWith(txt)
回复 使用道具 举报
请参考Day29的视频
回复 使用道具 举报
这个有点麻烦哦,不过原理应该都差不多,递归调用方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马