Java - Tools - 1. 统计单独的文件目录下有多少行代码。
前言
为了实现统计代码行数的简易化。
代码如下(示例):
public class GetTotalLineOfCode{
//设置静态变量,统计Folder下所有的代码行数。
public static int countSum;
public static void main(String[] args) {
//文件夹的路径
String path = "D:\\workSpace\\DBMove\\src\\com\\sony\\newparts\\dbmove";
File file = new File(path);
//调用方法caculateDirectory()。
caculateDirectory(file);
//输出Folder下的所有代码数量
System.out.println("Final result:" + countSum);
}
public static void caculateDirectory(File file) {
int sum = 0;
//判断当前是文件夹还是文件。
if (file.isDirectory()) {
File[] files = file.listFiles();
//判断当前文件是文件夹还是文件。
for (File nowFile : files) {
if (nowFile.isDirectory()) {
caculateDirectory(nowFile);
} else {
int num = caculateFile(nowFile);
sum += num;
}
}
System.out.println(file + " Folder:" + sum);
System.out.println("---------------------------------------------------------------");
} else if (file.isFile()) {
int num = caculateFile(file);
sum += num;
}
}
public static int caculateFile(File file) {
int num = 0;
try {
//创建字符缓冲输入流对象,封装数据源文件路径
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
boolean flag = false;
//循环判断行内容是否为空。
while ((line = br.readLine()) != null) {
//为当前的行去掉空格。
String newLine = line.trim();
//去掉有注释和去掉空格之后长度为0的行。
if (newLine.startsWith("/*")) {
flag = true;
} else if (newLine.endsWith("*/")) {
flag = false;
} else if (newLine.startsWith("//") || newLine.length() == 0) {
num += 0;
} else if(!flag){
num += 1;
countSum++;
}
}
} catch (Exception e) {
e.printStackTrace();
}
//输出统计的一个文件的代码行数。
System.out.println(file + ":" + num);
return num;
}
}
总结
通过使用递归、循环的方式,实现计算代码的行数。