Java使用递归方法,实现统计项目目录下有多个java文件,共有多少行代码
public class CountFiles {
static int num = 0;
static int rows = 0;
public static void main(String[] args) {
String dir = System.getProperty("user.dir");
dir = "要读取的项目文件路径";
File s = new File(dir);
count(s);
System.out.println("----------------------------");
System.out.println("总共:"+num+"个java文件");
System.out.println("共" + rows + "行");
}
/**
* Description: 递归遍历目录,使用静态的成员变量,统计java文件的个数
* @params: [java.io.File]
* @return: void
*/
public static void count(File src) {
if (src.isDirectory()) {
File[] fs = src.listFiles();
for (File f : fs) {
if (f.isDirectory()) count(f);
if (f.isFile() && f.getName().endsWith(".java")){
++num;
rows+=getFileRows(f);
//System.out.printf("文件:%s (%d行)。%n",f.getAbsolutePath(),getFileRows(f));
}
}
}
}
/**
* Description: 获取文件的行数
* @params: [java.io.File]
* @return: int
*/
public static int getFileRows(File src) {
int rows = 0;
try (FileInputStream fis = new FileInputStream(src)) {
rows = (int) new String(fis.readAllBytes()).lines().count();
} catch (Exception e) {
}
return rows;
}
}
运行结果如下
此方法连同空行一起统计,在idea中有Statistic插件可统计源代码行数,插件使用方法见我另一篇文章。
附文章地址(插件使用方法)