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();
}
}
}