黑马程序员技术交流社区

标题: 求助大神,这道题怎么做,IO流的题 [打印本页]

作者: Fate_stay    时间: 2016-9-28 22:30
标题: 求助大神,这道题怎么做,IO流的题
3. 统计D盘下每个文件夹中.txt文件的个数(包括子文件里的文件),
  然后将文件夹名称以及该文件夹里.txt文件个数存入到合适的集合中,并遍历该集合,
  打印方式如下:(12分)
  XXX文件夹(父文件夹名称即可)——有X个.txt文件(包括子文件夹里的txt文件个数)
  比如:
  a文件夹——有12个.txt文件 d文件夹——有6个.txt文件




作者: 李春林    时间: 2016-9-28 23:08
用IO流配合递归做即可
作者: xianghui0521    时间: 2016-9-28 23:17
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;
}

}

作者: Fate_stay    时间: 2016-9-29 23:00
xianghui0521 发表于 2016-9-28 23:17
public static void main(String[] args) {
  File dir = new File("D:\\");
  //将D盘下的文件存到集合数 ...

好使了,还没报错,大神谢谢啦! 我有时间得好好看看
作者: 周军福    时间: 2016-9-29 23:33
IO流配合递归,listfile获取文件,匹配endWith(txt)
作者: 周军福    时间: 2016-9-29 23:44
请参考Day29的视频
作者: 读书可以当饭吃    时间: 2016-9-30 00:34
这个有点麻烦哦,不过原理应该都差不多,递归调用方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2