Java - Tools - 1. 统计单独的文件目录下有多少行代码。

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

}

总结

通过使用递归、循环的方式,实现计算代码的行数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值