读书人

项目代码行数统计-java种统计

发布时间: 2012-12-26 14:39:28 作者: rapoo

项目代码行数统计--java类统计

简易版的代码行统计工具类

import java.io.File;import java.io.FileReader;import java.io.IOException;import java.io.LineNumberReader;import org.apache.commons.lang.StringUtils;public class ProjectCountLine {private static final String JAVA_FILE_SUF = "java";private static final String CSS_FILE_SUF = "css";private static final String JS_FILE_SUF = "js";private static final String JSP_FILE_SUF = "jsp";private static final String HTML_FILE_SUF = "html";private static final String PROPERTIES_FILE_SUF = "properties";private static final String VM_FILE_SUF = "vm";// 项目的跟目录private File rootFile = null;// 项目的行数private long count = 0L;/** * 入口方法 *  * @param path *            项目的根目录路径 * @return * @throws IOException * @see [类、类#方法、类#成员] */public long service(String path) throws IOException {boolean flag = checkPath(path);if (flag)countFilesLine(rootFile);return count;}/** * 检查文件是否是需要统计的文件类型 *  * @param fileName *            文件的名称 * @return true:文件为需要统计的文件; false:文件为不需要统计的文件 * @see [类、类#方法、类#成员] */private boolean isCountFileType(String fileName) {if (StringUtils.isBlank(fileName))return false;if (fileName.endsWith(JAVA_FILE_SUF) || fileName.endsWith(CSS_FILE_SUF)|| fileName.endsWith(JS_FILE_SUF)|| fileName.endsWith(JSP_FILE_SUF)|| fileName.endsWith(HTML_FILE_SUF)|| fileName.endsWith(PROPERTIES_FILE_SUF)|| fileName.endsWith(VM_FILE_SUF))return true;return false;}/** * 检查项目的根路径是否正确 *  * @param path *            项目路径 * @return true:传入的路径是正确的; false:传入的路径不正确 * @see [类、类#方法、类#成员] */private boolean checkPath(String path) {if (StringUtils.isBlank(path))return false;rootFile = new File(path);if (!rootFile.exists() && !rootFile.isDirectory())return false;return true;}/** * 统计指定文件下的所包含的指定格式的文件的行数 *  * @param file *            指定文件 * @throws IOException *             文件不存在时抛出IO异常 * @see [类、类#方法、类#成员] */private void countFilesLine(File file) throws IOException {File[] files = file.listFiles();if (null == files)return;for (int i = 0; i < files.length; i++) {File tempFile = files[i];String fileName = tempFile.getName();if (fileName.endsWith("svn"))continue;if (tempFile.isFile()) {if (isCountFileType(fileName)) {LineNumberReader linReader = new LineNumberReader(new FileReader(tempFile));linReader.skip(Long.MAX_VALUE);count += linReader.getLineNumber() + 1;}} else {// 当前为File目录,则进行递归countFilesLine(tempFile);}}}public static void main(String[] args) {ProjectCountLine countLine = new ProjectCountLine();try {long count = countLine.service("E:\\Demo\\java\\eclipse\\afk");System.out.println(count);} catch (IOException e) {e.printStackTrace();}}}

读书人网 >编程

热点推荐