统计有效、空行、注解代码行数

这是一个Java程序,用于统计指定目录下.java文件的正常代码行、注释行和空行数量。通过递归遍历目录,匹配正则表达式来区分不同类型的代码行。程序中包含主方法进行执行,并打印统计结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.fr24.dai.regEx;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class CountCode {

    static long normalLines = 0l;
    static long commmentLines = 0l;
    static long whiteLines = 0l;

    public static void main(String[] args) {
        // String fileName = ReadPropertiesUtils.getPropertiesValueByKey("/resource/fileName.properties", "fileName");
        String fileName = "F:\\Desktop\\code";
        File f = new File(fileName);
        if (f.isDirectory()) {
            countCode(f);
        }
        p("normalLines:" + normalLines);
        p("commentLines:" + commmentLines);
        p("whiteLines:" + whiteLines);
    }

    private static void countCode(File f) {
        File[] childs = f.listFiles();
        for (File file : childs) {
            if (file.isDirectory()) {
                countCode(file);
            }
            if (file.getName().matches(".*\\.java$")) {
                parse(file);
            }
        }
    }

    private static void parse(File f) {
        BufferedReader br = null;
        boolean comment = false;
        try {
            br = new BufferedReader(new FileReader(f));
            String line = "";
            while ((line = br.readLine()) != null) {
                line = line.trim();
                if (line.matches("//.*")) {
                    ++commmentLines;
                } else if (line.matches("^/\\*.*\\*/$")) {
                    ++commmentLines;
                } else if (comment) {
                    ++commmentLines;
                    if (line.matches(".*\\*/$")) {
                        comment = false;
                    }
                } else if (line.matches("^/\\*.*[^\\*/$]")) {
                    ++commmentLines;
                    comment = true;
                } else if (!comment &&line.matches("[\\s&&[^\\n]]*")) {
                    ++whiteLines;
                } else {
                    ++normalLines;
                }

            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void p(Object o) {
        System.out.println(o);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值