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