hj_代码行数统计
闲来无事,统计下代码行数,空格行数,字符个数等~
package com.horuse;
import java.io.*;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author hj
* @Date 2022/7/20
* @Description:
*/
public class HjTest {
private static int directoryNum = 0;
private static int javaFileNum = 0;
private static int javaCodeRows = 0;
private static int javaLetterNum = 0;
private static int javaSpaceRows = 0;
private static int xmlFileNum = 0;
private static int ymlFileNum = 0;
private static int rarNum = 0;
private static int totalCodeRows = 0;
private static int totalSpaceRows = 0;
public static void main(String[] args) throws IOException {
String filePath1 = "D:\\WORK\\horus\\idea\\upleaf";
String filePath2 = "D:\\WORK\\horus\\idea\\hauscal";
File dir1 = new File(filePath1);
statistics(dir1);
File dir2 = new File(filePath2);
statistics(dir2);
System.out.println("统计的根目录是:\n" + filePath1+"\n"+filePath2);
System.out.printf("目录个数为:%s \n", directoryNum);
System.out.printf("java文件个数为:%s \n", javaFileNum);
System.out.printf("java代码行数为:%s \n", javaCodeRows);
System.out.printf("java空格行数为:%s \n", javaSpaceRows);
System.out.printf("java字符个数:%s \n", javaLetterNum);
System.out.printf("xml文件个数为:%s \n", xmlFileNum);
System.out.printf("yml文件个数为:%s \n", ymlFileNum);
System.out.printf("rar文件个数为:%s \n", rarNum);
System.out.printf("总行数为:%s \n", totalCodeRows);
System.out.printf("总空格行数为:%s \n", totalSpaceRows);
}
private static void statistics(File dir) throws IOException {
// 目录
if (dir.isDirectory()) {
directoryNum++;
File[] listFile = dir.listFiles();
if (null == listFile) {
return;
}
for (File f : listFile) {
if (f.isDirectory()) {
// 递归调用
statistics(f);
}
BufferedReader br;
if (f.isFile()) {
String fName = f.getName();
// 文件后缀
if (fName.contains(".")) {
String substring = fName.substring(fName.lastIndexOf(".") + 1);
switch (substring) {
case "java":
javaFileNum++;
br = new BufferedReader(new FileReader(f));
javaCodeRows += br.lines().filter(line -> line.trim().length() > 0).count();
br = new BufferedReader(new FileReader(f));
javaSpaceRows += br.lines().filter(line -> line.trim().length() == 0).count();
br = new BufferedReader(new FileReader(f));
List<String> collect = br.lines().collect(Collectors.toList());
collect.forEach(s -> javaLetterNum += s.replace(" ", "").length());
break;
case "xml":
xmlFileNum++;
break;
case "yml":
ymlFileNum++;
break;
case "rar":
rarNum++;
break;
default:
continue;
}
}
br = new BufferedReader(new FileReader(f));
totalCodeRows += br.lines().filter(line -> line.trim().length() > 0).count();
br = new BufferedReader(new FileReader(f));
totalSpaceRows += br.lines().filter(line -> line.trim().length() == 0).count();
}
}
}
}
}

浙公网安备 33010602011771号