文档章节

代码行数统计java实现

无知的小孩
 无知的小孩
发布于 2017/10/13 21:03
字数 268
阅读 20
收藏 0


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

public class CodeCount {
    
    static int count = 0;
    
    static ArrayList<String> ignore_folder = new ArrayList<String>();
    static ArrayList<String> ignore_ext = new ArrayList<String>();
    
    static{
        
        //忽略的文件后缀
        ignore_ext.add(".jar");
        ignore_ext.add(".class");
        ignore_ext.add(".classpath");
        ignore_ext.add(".project");
        
        //忽略的文件夹
        ignore_folder.add("resources");
        ignore_folder.add("classes");
        ignore_folder.add(".settings");
        ignore_folder.add("META-INF");
    }
    
    static void readLineCount(File _f){
        if(_f != null){
            String ext = _f.getPath();
            //文件后缀
            for(String _ext:ignore_ext){
                if(ext.endsWith(_ext)){
                    //System.out.println("文件后缀:"+ext);
                    return;
                }
            }
            //文件夹
            for(String _folder:ignore_folder){
                if(ext.indexOf(_folder) > -1){
                    //System.out.println("文件夹:"+ext);
                    return;
                }
            }
        }
        //System.out.println(_f.getPath());
        //定义字符流读取文件
        FileReader fileReader = null;
        try {
            fileReader = new FileReader(_f);
        }catch(IOException e){
            e.printStackTrace();
        }
        // 从字节流中升级为字符流,方便按行读取。
        BufferedReader bufferedReader = new BufferedReader(fileReader); 
        try {
            while (bufferedReader.readLine() != null) {
                count++;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fileReader != null) {
                try {
                    fileReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return;
    }
    
    static void recursionFolder(File f){
        if(f != null && !f.exists()){
            System.out.println("文件夹不存在:"+f.getPath());
            return;
        }
        for(File _f:f.listFiles()){
            //是文件
            if(_f.isFile()){
                readLineCount(_f);
            }
            if(_f.isDirectory()){
                recursionFolder(_f);
            }
        }
    }
    
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in); 
        System.out.println("请输入要统计代码的文件夹:"); 
        String pfolder = s.nextLine();
        System.out.println(pfolder);
        File folder = new File(pfolder);
        recursionFolder(folder);
        System.out.println("代码总行数:"+count);
    } 
    
}
 

© 著作权归作者所有

共有 人打赏支持
上一篇: Nginx集群Tomcat
下一篇: 常用工具类
无知的小孩
粉丝 1
博文 70
码字总数 19034
作品 0
贵阳
后端工程师
私信 提问
java初学者弱弱的求组关于文件读取问题

读一个文件名称, 如果是.java文件,就分析出 代码行数、空行数、注释行数。 如果是文件夹,就递归分析出该文件夹下的每个java文件的代码行数、空行数、注释行数。 统计注释率、空行率、有效...

sxyok
2014/03/18
133
2
Linux 统计代码行数

统计文件行数(单个文件): wc -l file 例如: homer@ubuntu:~/workspace/android/game$ wc -l LGameAndroid2DActivity.java 906 LGameAndroid2DActivity.java 统计目录所有文件行数(全部目......

晨曦之光
2012/03/02
991
0
Linux 统计代码行数

统计文件行数(单个文件): wc -l file 例如: homer@ubuntu:~/workspace/android/game$ wc -l LGameAndroid2DActivity.java 906 LGameAndroid2DActivity.java 统计目录所有文件行数(全部目......

长平狐
2013/01/06
79
0
统计整个Xcode工程代码行数

统计整个工程代码行数 打开终端,用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来: find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" ......

长平狐
2013/08/21
8.3K
3
下面这段代码怎么改成使用对象的方式?怎么实现递归分析文件夹下的每个文件(求助,最好能给出代码和注释)

/*读一个文件名称, 如果是.java文件,就分析出 代码行数、空行数、注释行数。 如果是文件夹,就递归分析出该文件夹下的每个java文件的代码行数、空行数、注释行数。 统计注释率、空行率、有...

sxyok
2014/03/20
155
0

没有更多内容

加载失败,请刷新页面

加载更多

二进制取反

取反,是Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。 概念 编辑 补码的规定如下: 对正数来说,最高位为0,其余各位代表数值本身(以二进制表示)...

天王盖地虎626
今天
5
0
OSChina 周一乱弹 —— 可乐进化史

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 分享Radiohead的单曲《Creep》 《Creep》- Radiohead 手机党少年们想听歌,请使劲儿戳(这里) @EdmondFrank :刚...

小小编辑
今天
814
16
容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
5
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
25
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部