利用正则表达式统计某个某个文件夹下所有java文件的 空格行数、注释行数、和代码行数

前端之家收集整理的这篇文章主要介绍了利用正则表达式统计某个某个文件夹下所有java文件的 空格行数、注释行数、和代码行数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这个例子是前面《正则表达式》和《Math、File、Enum常用类》的两个例子中的代码的结合



import java.io.*;

public class codeCount2{
	
		static long  normalLines=0;
	  static long commentLines=0;
	  static long whiteLines=0;
	
	public static void main(String[] args){
		int level=1;
		File f=new File("E:/test3");
		System.out.println(f.getName());
		showAll(f,level);
		
		System.out.println("normalLines:"+normalLines);
		System.out.println("commentLines:"+commentLines);
		System.out.println("whiteLines:"+whiteLines);
		
		}
		
		public static void showAll(File f,int level){
			
			String preStr="";
			for(int i=0;i<level;i++){
				preStr+="    ";
			}
			File[] ff=f.listFiles();
			int i;
			for(i=0;i<ff.length;i++){
				System.out.println(preStr+ff[i].getName());
				
			  if(ff[i].isDirectory())showAll(ff[i],level+1);
			  
			  if(ff[i].isFile()&&ff[i].getName().matches(".*\\.java$")){
			      parse(ff[i]);
			  
			  }
				
			}
		}
			
			
			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]]*$"))             //readLine()时已经把换行给去掉了,所以查找空行的正则表达式时没有后面的换行匹配了
				   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(Exception e){
			System.out.println("出错啦!");
			e.printStackTrace();
			}finally{
				if(br!=null){
					try{
					br.close();
					br=null;
				}catch(IOException e){e.printStackTrace();
					}
					}
				}
				
		}
		
	}
	
	 

猜你在找的正则表达式相关文章