<span style="font-size:14px;">package cn.itcast.test; 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 normaLines = 0;//正常的行数 static long commentLines = 0;//注释行数 static long whiteLines = 0;//空白行 public static void main(String[] args) { File f = new File("E:\\SQF\\BaiduYunDownload\\尚学堂\\马士兵Java\\尚学堂科技_马士兵_JAVASE_坦克大战网络版\\尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程\\source\\TankWar1.9.11\\src"); File[] codeFiles = f.listFiles();//获取文件呢 //.java结尾的文件检索 for(File code:codeFiles){ if(code.getName().matches(".*\\.java$")){//后缀.java文件 parse(code); } } System.out.println("normaLines:" +normaLines ); System.out.println("commentLines:" + commentLines); System.out.println("whiteLines:" +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){ line = line.trim();//注意去空格,不要在36行去空格,空行时候 //readLine在读取数据的时候,会把每一行的\n去掉 if(line.matches("[\\s&&[^\\n]]*$")){//空行的处理 在不用readLine处理空行-----> [\\s&&[^\\n]]*\n$ whiteLines++; }else if(line.startsWith("/*")&&line.endsWith("*/")){ //当多行注释在一行的时候 commentLines++; }else if(line.startsWith("/*")&&!line.endsWith("*/")){//当多行注释不再一行的时候 commentLines++; comment = true; }else if(true == comment){ //多行注释的中间的进行统计 commentLines++; if(line.startsWith("*/")){//当统计到多行注释的最后一行把comment置为false comment = false; } }else if(line.startsWith("//")){ //单行注释 commentLines++; }else{//代码行统计 normaLines++; } } } catch (FileNotFoundException e) { e.printstacktrace(); } catch (IOException e) { e.printstacktrace(); }finally{ if(br != null){ try { br.close(); } catch (IOException e) { e.printstacktrace(); } } } } } </span>