java 获取代码行数_获取project里java代码行数

1、class

public class FileReadTest {

static int codeLines = 0;

static int whiteLines = 0;

static int commentLines = 0;

static int tatolLines = 0;

static boolean bComment = false;

public static void main(String[] args) {

StringBuffer pathName = new StringBuffer("D:\\WorkSpace\\demo\\src\\org\\user\\logic");

ComputeDirectoryAndFiles(pathName, 0);

//ComputeNetFiles(pathName);

System.out.println("Code Lines : " + (codeLines = tatolLines - commentLines - whiteLines));

System.out.println("White Lines : " + whiteLines);

System.out.println("Comment Lines : " + commentLines);

}

public static void ComputeDirectoryAndFiles(StringBuffer pathName, int level) {

File directory = new File(pathName.toString());

File[] files = directory.listFiles();

String prefix = "";

for (int i = 0; i < level; i++) {

prefix += "** ";

}

if (directory.isDirectory()) {

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

if (files[i].isFile() && files[i].getName().matches("^[a-zA-Z[^0-9]]\\w*.java$")) {

computeLines(files[i]);

}

if (files[i].isDirectory()) {

pathName.append("/" + files[i].getName());

level++;

ComputeDirectoryAndFiles(pathName, level);

int start = pathName.toString().length() - files[i].getName().length() - 1;

int end = pathName.toString().length();

pathName.delete(start, end);

level--;

}

}

}

}

public static void ComputeNetFiles(StringBuffer netPath){

try {

File netDir = new File(netPath.toString());

File[] files = netDir.listFiles();

for(int i=0;i

System.out.println(":"+files[i].getName());

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void computeLines(File file) {

BufferedReader bf = null;

try {

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

String lineStr = "";

while ((lineStr = bf.readLine()) != null) {

// 总行数

tatolLines++;

// 计算空行

whiteLines(lineStr);

// 统计代码行数

commendLines(lineStr);

// 计算代码的行数

// codeLines(lineStr);

}

} catch (FileNotFoundException e) {

System.out.println("文件没有找到");

} catch (IOException ee) {

System.out.println("输入输出异常 ");

} finally {

if (bf != null) {

try {

bf.close();

bf = null;

} catch (Exception e) {

System.out.println("关闭BufferReader时出错");

}

}

}

}

public static void whiteLines(String lineStr) {

if (lineStr.matches("^[\\s&&[^\\n]]*$")) {

whiteLines++;

}

}

public static void commendLines(String lineStr) {

// 判断是否是一个注释行

// 这里是单行注释的如 /*..... */或/**.... */

if (lineStr.matches("\\s*/\\*{1,}.*(\\*/).*")) {

commentLines++;

}

/**

* 这里是多行注释的

*/

// 这里的是当开始为/**或/*但是没有 */ 关闭时

else if (lineStr.matches("\\s*/\\*{1,}.*[^\\*/].*")) {

commentLines++;

bComment = true;

} else if (true == bComment) {

commentLines++;

if (lineStr.matches("\\s*[\\*/]+\\s*")) {

bComment = false;

}

} else if (lineStr.matches("^[\\s]*//.*")) {

commentLines++;

}

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-05-08 10:05

浏览 1855

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值