public class LineCounter { public static void main(String[] args) { String path = "D:/workspace/LineCounter"; int count = getAllJavaFilesLineCount(new File(path)); System.out.println("总行数:" + count); } /** * 使用递归实现统计这个文件夹中(包含子孙文件夹中的)的所有.java文件的总行数 * * @param dir * 文件夹 * @return */ private static int getAllJavaFilesLineCount(File dir) { int count = 0; for (File file : dir.listFiles()) { // 如果是.java文件,就统计行数 if (file.isFile() && file.getName().endsWith(".java")) { count += FileUtils.getLineCount(file); } // 如果是文件夹,就递归调用 else if (file.isDirectory()) { count += getAllJavaFilesLineCount(file); } } return count; } }
public class FileUtils { /** * 读取指定文件的内容,返回总行数 * * @param file * @return */ public static int getLineCount(File file) { if (!file.isFile()) { throw new IllegalArgumentException("请指定一个有效的文件对象!"); } try { BufferedReader reader = new BufferedReader(new FileReader(file)); int count = 0; while (reader.readLine() != null) { count++; } reader.close(); return count; } catch (Exception e) { throw new RuntimeException(e); } } }
原文地址:http://blog.csdn.net/ankeyuan/article/details/39644715