查询项目行数

来源:互联网 发布:灯珠花 淘宝 编辑:程序博客网 时间:2024/05/17 02:24

package com;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

/**
 *
 *
 *
 * @author LC
 *
 *
 *
 */

public class CountCodes {

 static long normalLines = 0; // 空行

 static long commentLines = 0; // 注释行

 static long whiteLines = 0; // 代码行

 public static void main(String[] args) {

  CountCodes sjc = new CountCodes();

  File f = new File(
    "D://workspace//gqt//src");// 目录

  System.out.println(f.getName());

  sjc.treeFile(f);

  System.out.println("空行:" + normalLines);

  System.out.println("注释行:" + commentLines);

  System.out.println("代码行:" + whiteLines);

 }

 /**
  *
  * 查找出一个目录下所有的.java文件
  *
  *
  *
  * @param f
  *            要查找的目录
  *
  */

 private void treeFile(File f) {

  File[] childs = f.listFiles();

  // int count = 0;

  // int sum = 0;

  for (int i = 0; i < childs.length; i++) {

   // System.out.println(preStr + childs[i].getName());

   if (!childs[i].isDirectory()) {

    if (childs[i].getName().matches(".*//.java$")) {

     System.out.println(childs[i].getName());

     // count ++;

     sumCode(childs[i]);

    }

   } else {

    treeFile(childs[i]);

    // sum += count;

   }

  }

 }

 /**
  *
  * 计算一个.java文件中的代码行,空行,注释行
  *
  *
  *
  * @param file
  *
  * 要计算的.java文件
  *
  */

 private void sumCode(File file) {

  BufferedReader br = null;

  boolean comment = false;

  try {

   br = new BufferedReader(new FileReader(file));

   String line = "";

   try {

    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 (IOException e) {

    e.printStackTrace();

   }

  } catch (FileNotFoundException e) {

   e.printStackTrace();

  } finally {

   if (br != null) {

    try {

     br.close();

     br = null;

    } catch (IOException e) {

     e.printStackTrace();

    }

   }

  }

 }

}

原创粉丝点击