package cn.lyc;

import java.io.File;

public class File5 {
//声明一个静态变量,方法中会用到
static int num = 0;
   //声明一个变量用来储存行数
static long rows = 0;
    public static void main(String[] args) {
//文件路径
String path = "C:\\Users\\86176\\Desktop\\J";
//调用方法
query(new File(path));
//输出num(符合文件的个数)
System.out.println(num);
     //输出rows(这些文件的行数)
System.out.println(rows
    }

//写一个新的方法
public static void query(File queryFile){
//如果是一个目录
if (queryFile.isDirectory()){
//把里面的文件放到数组中,方便遍历
File[] files = queryFile.listFiles();
//遍历数组
for (File fs : files){
//如果遍历之后还有目录,就直接再调用一次方法
if (fs.isDirectory()) query(fs);
//如果遍历之后后缀为.java的文件,每有一个就++num(统计个数)
if (fs.isFile() && fs.getName().endsWith(".java")) {
            ++num;

          
/**
* BufferedReader 缓存读取流
* trim 清除空格
* filter 过滤
* e->e Lambda表达式
*/
             //创建一个缓冲读取流
BufferedReader br = new BufferedReader(new FileReader(fs));
//统计里面的行数(未清除空行)
// rows = br.lines().count();
//lines是流,所以只能调用一次,使用(清除空行)的方式统计后,就不能使用(未清除空行)的方式统计
//清除空行后再统计行数
rows = br.lines().filter(e->e.trim().length()>0).count();
          }
}
}
//最后判断最初的目录下如果后缀为.java的文件,每有一个也++num,进行统计
if (queryFile.isFile() && queryFile.getName().endsWith(".java")) {
         ++num;
                //创建一个缓冲读取流
BufferedReader br = new BufferedReader(new FileReader(queryFile));
//统计里面的行数
// rows = br.lines().count();
//清除空行
rows = br.lines().filter(e->e.trim().length()>0).count();
      }
}
}
posted on 2021-01-20 20:29  liuyunche  阅读(505)  评论(0编辑  收藏  举报