正则表达式,轻松查看项目源代码行数

package util;

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

public class LineCounter {

   
 static long normalLines = 0;
 static long commentLines = 0;
 static long whiteLines = 0;
 
 // 递归获得所有当前目录下的文件及其子文件
 public static void getFile(String directPath){
  File filePath=new File(directPath);
  File file[]=filePath.listFiles();
   for(File newFile:file){
    if(newFile.isDirectory())
     getFile(newFile.getAbsolutePath());
    if(newFile.isFile()){
     if(newFile.getName().matches(".*//.java|.*//.jsp|.*//.xml|.*//.html$"))
      parse(newFile);
     
    }
   }
  
 }
 public static void main(String[] args) {
  //String directPath="E://mywork_ssh//NBS//";
  //String directPath="E://mywork_ssh//NBS//src//book";
  //String directPath="G:/j2EE 项目/财务/shidacaiwu";
  String directPath="G:/j2EE 项目/员工打卡管理系统/WeTogether/WeTogether";
  
  getFile(directPath);
  
  
  System.out.println("程序代码行数:" + normalLines);
  System.out.println("注释代码数:" + commentLines);
  System.out.println("空白行数:" + whiteLines);
  
 }

 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("^[//s&&[^//n]]*$")) {
     whiteLines ++;
    } else if (line.startsWith("/*") && !line.endsWith("*/")) {
     commentLines ++;
     comment = true; 
    } else if (line.startsWith("/*") && line.endsWith("*/")) {
     commentLines ++;
    } else if (true == comment) {
     commentLines ++;
     if(line.endsWith("*/")) {
      comment = false;
     }
    } else if (line.startsWith("//")) {
     commentLines ++;
    } else {
     normalLines ++;
    }
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if(br != null) {
    try {
     br.close();
     br = null;
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值