import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class GetSourceCodeSumLine {
    /**
     * @param args
     */
    public static void main(String[] args) {

        // String JavaSourceCodeDir[] = {"G:\\workspace\\...\\...\\src", "G:\\workspace\\...\\...\\src"};
        String JavaSourceCodeDir[] = { "E:\\workspace\\...\\...\\...\\src\\com" };
       
        long codeCountLine = getJavaSourceCodeCountLine(JavaSourceCodeDir);

//        ArrayList<String> JavaSourceCodeDirs = new ArrayList<String>();
////        JavaSourceCodeDirs.add("G:\\workspace\\...\\...\\src");
////        JavaSourceCodeDirs.add("G:\\workspace\\...\\...\\src");
//        JavaSourceCodeDirs.add("E:\\workspace\\...\\...\\...\\src");
//
//        long codeCountLine = getJavaSourceCodeCountLine(JavaSourceCodeDirs);

        System.out.println(JavaSourceCodeDir.toString() + ":共有 "
                + codeCountLine + " 行java源代码");
    }
   
   
    public static long getJavaSourceCodeCountLine(String[] JavaSourceCodeDirs) {
        long codeCountLine = 0;
        for (String dirPath : JavaSourceCodeDirs) {
            File fl = new File(dirPath);
            if (fl.exists()) {
                codeCountLine += getJavaFileCountLine(fl);
            }
        }
        return codeCountLine;
    }
   
    public static long getJavaSourceCodeCountLine(ArrayList<String> JavaSourceCodeDirs) {
        long codeCountLine = 0;
        for (String dirPath : JavaSourceCodeDirs) {
            File fl = new File(dirPath);
            if (fl.exists()) {
                codeCountLine += getJavaFileCountLine(fl);
            }
        }
        return codeCountLine;
    }

    private static long getJavaFileCountLine(File fl) {
        long javaCodeCountLine = 0;

        if (fl != null && fl.exists()) {
            if (fl.isDirectory()) {
                File[] listFiles = fl.listFiles();
                for (File file : listFiles) {
                    javaCodeCountLine += getJavaFileCountLine(file);
                }
            } else if (fl.isFile() && !fl.isHidden()) {
                if (fl.getName().endsWith(".java")) {

                    FileReader fr = null;
                    BufferedReader br = null;
                    try {
                        fr = new FileReader(fl);
                        br = new BufferedReader(fr);
                        while (br.readLine() != null)
                            javaCodeCountLine++;
                        br.close();
                        fr.close();
                    } catch (Exception e) {
                    } finally {
                        if (fr != null) {
                            try {
                                fr.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            } finally {
                                fr = null;
                            }
                        }
                        if (br != null) {
                            try {
                                br.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            } finally {
                                br = null;
                            }
                        }
                    }
                }

            }
        }
        return javaCodeCountLine;
    }
}

java_获取多个文件夹下所有.java源码的总行数的更多相关文章

  1. Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  2. Java——用程序编译一个文件夹下所有java文件到另一个文件夹下

    package com.java.test.a; import java.io.IOException; import java.util.ArrayList; import java.util.Ar ...

  3. Java——DOS命令窗口用命令编译文件夹下所有.java文件

    1.进入指定目录    cd 进入用户主目录    cd ~ 进入用户主目录     cd - 返回进入此目录之前所在的目录     cd .. 返回上级目录    cd\ 直接退回到当前盘根目录2. ...

  4. C++ 获取某一文件夹下的所有文件名

    //********************************************************************** // Method: 获取文件夹下所有文件 // Fu ...

  5. IDEA创建maven的web项目时,main文件夹下没有java,resources目录等源文件夹

    https://blog.csdn.net/qq_34377273/article/details/83183307

  6. eclipse下查看java源码设置

    myway: 1.选择一函数,按住ctrl,显示open declaration(或按F3); 2.点进去: 如果未配置,点 source attachment configuration -- ex ...

  7. 如何设置eclipse下查看java源码

    windows--preferences--java--installed jres --选中jre6--点击右边的edit--选中jre6/lib/rt.jar --点击右边的 source att ...

  8. Windows 下通过DOS命令获取指定文件夹下所有文件的全路径

    1.在你要获取路径的文件夹下 新建文本文档 (.txt) 文件, 2.输入以下内容保存 DIR *.* /S/B >LIST.TXT /s 表示递归 3. 将文件后缀改成 .bat 4.双击运行 ...

  9. c/c++获取文件夹下所有文件名

    如何获取某一文件夹下所有文件名,是一个很有意思的问题.网上代码很多,找了个简单的,特此收录. #include <iostream> #include <io.h> #incl ...

随机推荐

  1. UVa 124 - Following Orders

    题目大意:给一个变量列表和变量的大小关系,输出所有的满足约束的序列. 构建为有向图,然后就是拓扑排序,使用回溯输出所有的结果. #include <cstdio> #include < ...

  2. UVa 11495 - Bubbles and Buckets

    题目大意:给一个有n个数的序列,通过交换相邻的逆序数使这个序列最终有序,求需要交换的次数. 本来可以用冒泡排序解决,但是n达到105,用冒泡排序会超时,用O(nlogn)的归并排序可以达到要求.< ...

  3. shell 整理,更新,记录

    菜鸟级awk,读取android manifest,把key->value 保存到path.rc. awk -F "name=" '{if(/project path/) p ...

  4. poi 导出excel 异常处理方式--曲线救国法

    excel 导出不算什么新鲜的话题.目前各种生成excel的开源jar包,poi,jxtl等.但是下载过程中如果出现异常该如何处理呢. 翻了之前的几个项目中的excel导出,有的异常就直接抛了出去,有 ...

  5. 使用YUIDoc生成JS文档

    其实YUIDoc主页已经写的比较清晰了,但有一些概念和细节再点出一些注意的地方. 目前最新的YUIDoc使用nodejs进行开发安装和使用都非常的方便. 我们只需要将我们的代码加上必要的注释,便可以很 ...

  6. DEV控件的Gridview1

    DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...

  7. jquery 编写插件入门

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <sc ...

  8. C# 编写通用的JSON数据进行序列化和反序列化

    注意事项:使用JSON系列化和反系列化,必须要添加引用System.Runtime.Serialization. 1.通用类代码如下: /// <summary>    /// JSON序 ...

  9. 搭建Node.js开发IDE环境WebStrom5 多图

    1.下载前期准备 node.js下载地址 http://nodejs.org/ WebStrom5下载地址: http://download-ln.jetbrains.com/webide/WebSt ...

  10. HTTP协议系列(3)---包括WebSocket简单介绍

    一.HTTPS     HTTP是超文本传输协议,那HTTPS是什么尼?要明白HTTPS是什么先要明白HTTP的缺点,想一下我们在使用HTTP的时候会有那些缺点尼? 1.通信使用的明文(不加密),内容 ...