统计有效、空行、注解代码行数
2016-02-19 14:54
453 查看
package com.fr24.dai.regEx; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class CountCode { static long normalLines = 0l; static long commmentLines = 0l; static long whiteLines = 0l; public static void main(String[] args) { // String fileName = ReadPropertiesUtils.getPropertiesValueByKey("/resource/fileName.properties", "fileName"); String fileName = "F:\\Desktop\\code"; File f = new File(fileName); if (f.isDirectory()) { countCode(f); } p("normalLines:" + normalLines); p("commentLines:" + commmentLines); p("whiteLines:" + whiteLines); } private static void countCode(File f) { File[] childs = f.listFiles(); for (File file : childs) { if (file.isDirectory()) { countCode(file); } if (file.getName().matches(".*\\.java$")) { parse(file); } } } 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(); if (line.matches("//.*")) { ++commmentLines; } else if (line.matches("^/\\*.*\\*/$")) { ++commmentLines; } else if (comment) { ++commmentLines; if (line.matches(".*\\*/$")) { comment = false; } } else if (line.matches("^/\\*.*[^\\*/$]")) { ++commmentLines; comment = true; } else if (!comment &&line.matches("[\\s&&[^\\n]]*")) { ++whiteLines; } else { ++normalLines; } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void p(Object o) { System.out.println(o); } }
相关文章推荐
- Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.jndi.JndiNameException
- gnome和kdg中的图标主题规格(QT ,ICON,ubuntu
- XCode设置(怎么让代码收缩)
- Java中数值类型之间的转换
- Java内存管理—虚拟机运行时数据区域
- Java Web应用的配置描述符web.xml
- lua 重新加载module
- Java获取随机数的3种方法
- Win8.1 下安装 eVC++ 4.0
- PHP学习笔记之数组操作//待完善V1.0
- @NotNull javax.validation.constraints.NotNull 有点蛋疼
- 迟到的总结(一)--springmvc的系统学习之配置方式
- Python学习之路(1)--python运行三种方式
- Eclipse常用快捷键
- 使用C#配合ArcGIS Engine进行地理信息系统开发
- Java 遍历文件夹的几种方式及简单性能对比
- python+selenium实现登录账户后自动点击
- XCode设置(怎么让代码收缩)
- Mockito 简明教程
- 如何删除PHP数组中的元素,并且索引重排