java 代码统计工具

java 代码统计工具


项目上线要统计一下所有代码的行数,公司给了个工具,结果用着用着就卡掉卡死,索性自己写了一个,项目不是很大,没用到多线程等技术。下面直接贴代码:

import java.io.*;
import java.util.Scanner;

public class CountRows {

private static int allRowNumber;

public static void main(String[] args) throws IOException {
    System.out.println("PS:自动省略node_modules文件");
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入文件目录");
    String path = sc.next();

    File file = new File(path);
    if (!file.exists()) {
        System.out.println("目录不存在");
    } else {
        System.out.println("请输入后缀名个数");
        int nameCount = sc.nextInt();
        String[] nameArrs = new String[nameCount];
        for (int i = 0; i < nameCount; i++) {
            System.out.println("请输入第" + (i + 1) + "个文件后缀名");
            nameArrs[i] = sc.next();
        }
        readFile(file, nameCount, nameArrs);
        System.out.println("所有文件一共:" + allRowNumber + "行");
    }
}

public static void readFile(File file, int nameCount, String[] nameArrs) throws IOException {
    for (File files : file.listFiles()) {

        if (files.isDirectory() && !"node_modules".equals(files.getName())) {
            readFile(files, nameCount, nameArrs);
        }
        for (int i = 0; i < nameCount; i++) {
            if (files.getName().endsWith(nameArrs[i])) {
                BufferedReader br = new BufferedReader(new FileReader(files));
                int nowRows = 0;
                while (br.ready()) {
                    if (!"".equals(br.readLine().trim())) {
                        nowRows++;
                        allRowNumber++;
                    }
                }
                System.out.println("文件名: " + files.getName() + "   行数:" + nowRows);
                br.close();
            }
        }
    }
  }
}

随便找一个开源项目测试一下在这里插入图片描述
(PS:后缀名数量等自己定义即可)
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值