A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.IOException;

  6. public class CodeCounter {
  7.        
  8.         static long normalLines = 0;
  9.         static long commentLines = 0;
  10.         static long whiteLines = 0;
  11.        
  12.         public static void main(String[] args) {
  13.                 //需要统计的代码放置的文件夹
  14.                 File f = new File("D:\\JavaProjects\\day11");
  15.                 File[] codeFiles = f.listFiles();
  16.                 for(File child : codeFiles){
  17.                         if(child.getName().matches(".*\\.java$")) {
  18.                                 parse(child);
  19.                         }
  20.                 }
  21.                
  22.                 System.out.println("normalLines:" + normalLines);
  23.                 System.out.println("commentLines:" + commentLines);
  24.                 System.out.println("whiteLines:" + whiteLines);
  25.                
  26.         }

  27.         private static void parse(File f) {
  28.                 BufferedReader br = null;
  29.                 boolean comment = false;
  30.                 try {
  31.                         br = new BufferedReader(new FileReader(f));
  32.                         String line = "";
  33.                         while((line = br.readLine()) != null) {
  34.                                 line = line.trim();
  35.                                 if(line.matches("^[\\s&&[^\\n]]*$")) {
  36.                                         whiteLines ++;
  37.                                 } else if (line.startsWith("/*") && !line.endsWith("*/")) {
  38.                                         commentLines ++;
  39.                                         comment = true;       
  40.                                 } else if (line.startsWith("/*") && line.endsWith("*/")) {
  41.                                         commentLines ++;
  42.                                 } else if (true == comment) {
  43.                                         commentLines ++;
  44.                                         if(line.endsWith("*/")) {
  45.                                                 comment = false;
  46.                                         }
  47.                                 } else if (line.startsWith("//")) {
  48.                                         commentLines ++;
  49.                                 } else {
  50.                                         normalLines ++;
  51.                                 }
  52.                         }
  53.                 } catch (FileNotFoundException e) {
  54.                         e.printStackTrace();
  55.                 } catch (IOException e) {
  56.                         e.printStackTrace();
  57.                 } finally {
  58.                         if(br != null) {
  59.                                 try {
  60.                                         br.close();
  61.                                         br = null;
  62.                                 } catch (IOException e) {
  63.                                         e.printStackTrace();
  64.                                 }
  65.                         }
  66.                 }
  67.         }

  68. }
复制代码

评分

参与人数 1黑马币 +20 收起 理由
张_涛 + 20 赞一个!

查看全部评分

1 个回复

倒序浏览
可以用哦~{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马