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. usb开发

    usb开发 USB HID报告及报告描述符简介 LibUSB通过SetReport()请求与USBHID设备通信 libusb开发者指南 USB枚举和HID枚举实例 USB命令 BusHound数据分 ...

  2. .net面试题【持续更新.....】

    1.C#中readonly和const的区别? 2.C#中的排序继承自哪个接口?Icompare 3.阐述单点登录的实现原理? 4.C#中property和Attribute的区别? 5.Datase ...

  3. org.springframework.data.mapping.PropertyReferenceException: No property created found for type

    错误原因:org.springframework.data.domain.SortSort sort=new Sort(Sort.Direction.DESC,"created_time&q ...

  4. 安卓selector

    定义styles.xml <?xml version="1.0" encoding="utf-8"?> <resources> < ...

  5. Python twisted article

    学习python twisted 的好文章 An Introduction to Asynchronous Programming and Twisted Reference: http://kron ...

  6. windows(win10)下的mysql解压版安装

    1. 到mysql官网 下载mysql : http://dev.mysql.com/downloads/mysql/   ,会提示登陆,注册一个就行了,公司名什么的随便填. 注意区分32,64位.我 ...

  7. spring整合mybatis,springMVC的0配置文件方式

    0配置文件的形式主要是采用spring3.0提供的@configuration注解和spring容器在启动的时候会加载实现了WebApplicationInitializer的类,并调用其onStar ...

  8. arcgis 瓦片图加载规则(转载)

    arcgis 瓦片图加载规则 最近需要做地图离线的功能,要能下载指定区域的瓦片图,我们都知道如何加载谷歌和天地图的加载规则,但是网上貌似没有找到如何加载arcgis自己发布的瓦片图规则,好不容易找到一 ...

  9. wildfly 如何设置外网访问

    wildfly的默认配置是不支持外网访问的, 要想实现外网访问需要修改standalone.xml配置文件. 配置文件所在路径:wildfly/standalone/configuration/sta ...

  10. iOS 倒出spa文件 打包

    1. 修改Build Settings 修改 Code Signing: codesign failded 意思是签名错误,看看是否xcode -perferences是否没有登录,还有就是钥匙串密码 ...