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

来源:互联网 发布:网络发展前景 编辑:程序博客网 时间:2024/05/17 22:24
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

0 0