代码统计小程序

import java.io.*;
class CodeCounter {
	private static long normalLines = 0; //普通行
	private static long commentLines = 0; //注释行
	private static long whiteLines = 0;  //空白行
	private static long totalLines = 0; //总行数
	
	public CodeCounter(String s) {
		File f = new File(s);
		tree(f);
	}
	
	public void tree(File f) {
		System.out.println("Path   :   " + f.getPath());
		File[] childs = f.listFiles();
		if(childs == null){
		    return;
		}
		for(int i = 0; i < childs.length; i++) {
			if(childs[i].isDirectory()) {
				//if(childs[i].getName().equals("System Volume Information")) {
					//continue;
				//}else {
					tree(childs[i]);
				//}
				
			}else if(childs[i].getName().matches(".*\\.java$")) {
				parse(childs[i]);
			}
		}
	}

	public 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(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();
				}
			}
		}
		
	}

	public void p() {
		totalLines = normalLines + commentLines + whiteLines;
		System.out.println("normalLines: " + normalLines);
		System.out.println("commentLines: " + commentLines);
		System.out.println("whiteLines: " + whiteLines);
		System.out.println("totalLines: " + totalLines);
	}
}
public class TestCodeCounter {
	public static void main(String[] args) {
		CodeCounter c = new CodeCounter("D:\\");
		c.p();
	}
}

你可能感兴趣的:(C++,c,C#,F#)