注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Programmer's World

记录成长的点点滴滴

 
 
 

日志

 
 

用正则表达式统计出文件里代码的行数  

2012-09-01 17:36:38|  分类: java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Pattern;

public class CodeCounter {

 static long normalLine=0; //普通代码行
 static long commentLine=0;//注释行
 static long whiteLine=0;//空白行
 
 public static void main(String[] args) {
  //获取到文件目录
  File file=new File("D:\\a");
  //获取目录下所有文件
  File[] fileList=file.listFiles();
  //遍历 读取所有的文件
  for(File f:fileList){
   parse(f);
  }
  System.out.println("normalLine:"+normalLine);
  System.out.println("commentLine:"+commentLine);
  System.out.println("whiteLine:"+whiteLine);
 }

 private static void parse(File f) {
  //只读取后缀为java的文件
  if(!f.getName().matches("\\w+\\.java$"))
   return;
  boolean bool=false;
  try {
   //创建字符流阅读器
   BufferedReader br=new BufferedReader(new FileReader(f));
   String readStr="";
   //开始读取
   while((readStr=br.readLine())!=null){
    //如果是空白行 空白行书+1
    if(readStr.matches("^[\\s&&[^\\n]]+"))
     whiteLine++;
    //如果每一行的开头为/*则注释行+1
    else if(readStr.trim().startsWith("/*") && !readStr.endsWith("*/")){
     commentLine++;
     bool=true;
    //多行注释未结束就继续注释行+1
    }else if(bool){
     commentLine++;
     //读取到*/ 结束
     if(readStr.endsWith("*/"))
      bool=false;
    //单行注释 注释行继续+1
    }else if(readStr.trim().startsWith("//"))
     commentLine++;
    //单行注释 注释行继续+1
    else if(readStr.trim().startsWith("/*") && readStr.endsWith("*/"))
     commentLine++;
    //普通代码行+1
    else
     normalLine++;
    
   }
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
 }
 
 

}


  评论这张
 
阅读(21)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017