Nathing
mingwjj
全部博文(111)
j2se(1)
hibernate(0)
2016年(2)
2015年(1)
2014年(31)
2012年(2)
2011年(9)
2010年(36)
2009年(30)
kgdjszx
备案出行
hzlzy
zhaoyh
zyd10137
wddwr730
2_gougou
shenhp
yingyife
分类: Java
2010-11-08 23:29:56
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class CodeCounter { static long normalLines = 0; static long commentLines = 0; static long whiteLines = 0; static long operatorLines = 0; static int i = 0; public static void main(String[] args) { File f = new File("d:/A/B"); count(f); System.out.println("normalLines:" + normalLines); System.out.println("commentLines:" + commentLines); System.out.println("whiteLines:" + whiteLines); System.out.println("operatorLines:" + operatorLines); } private static void count(File f) { File[] codeFiles = f.listFiles(); for (File child : codeFiles) { System.out.println(child); if (child.isDirectory()) { count(child); } else { if (child.getName().matches(".*\\.java")) { parse(child); } } } } 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) { i++; line = line.trim(); //開頭是空白字符,並且不是\n(換行符),出現0次或多次.結束一定是\n //readLine()方法把每行的\n去掉了,所有結尾沒有\n //if (line.matches("^[\\s&&[^\\n]]*\\n$")) if (line.matches("^[\\s&&[^\\n]]*$")) { whiteLines++; } else if ((line.startsWith("{") && line.length() == 1) || (line.startsWith("}") && line.length() == 1)) { operatorLines++; } else if (line.startsWith("//")) { commentLines++; } 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 { 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(); } } } } }
上一篇:Freemarker基础
下一篇:解决XMLHttpRequest请求的缓存问题
登录 注册