实现统计java程序代码的小工具


package test;

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


public class coderCounter {

	static int normalLines=0;
	static int commentLines=0;
	static int whiteLines=0;
	
	public static void main(String[] args) {
		//假设所有的.java文件都在这个目录下
		File f=new File("G:\\Eclipse_stardard_Kepler_workspace\\"
				+ "SynchronizedDemo\\src\\com\\synch");
		File[] codeFiles=f.listFiles(); 
		for(File child:codeFiles){
			System.out.println("当前目录文件:"+child+"   ");
			//判断是否以.java结尾
			if(child.getName().matches(".*\\.java$")){
				parse(child);
			}
		}
		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){
					if(line.matches("^[\\s&&[^\\n]]*$")){
						//判断空行   以空白且不是换行的开头,以换行的结尾
						whiteLines++;
					}
					else if(line.startsWith("/*")&&!line.endsWith("/*")){
						commentLines++;
						comment=true;
					}
					else if(line.startsWith("/*")&&line.endsWith("/*")){
						commentLines++;
					}
					else if(comment) {
						commentLines++;
						if(line.endsWith("/*"))
							comment=false;
					}
					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();
					}
				}
			}
	}

}





输出结果:

当前目录文件:G:\Eclipse_stardard_Kepler_workspace\SynchronizedDemo\src\com\synch\SynchronizedDemo.java   
当前目录文件:G:\Eclipse_stardard_Kepler_workspace\SynchronizedDemo\src\com\synch\VolatileDemo.java   
代码行数:86
注释行数:10
空白行数:11

你可能感兴趣的:(Java)