统计代码文件数,行数,md5

工具:

package xx.js;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.*;
import java.util.*;

/**
 * 统计代码文件数,行数,md5
 */
public class TestFile {

    public static void main(String args[]) throws Exception{
        Set<String> filterType=new HashSet<>(Arrays.asList(".vue",".less",".js",".css"));
        //Set<String> filterType=new HashSet<>(Arrays.asList(".go"));
        String md5File="/xx.zip";
        String fold="/xx/fold";
        File parentFile=new File(fold);
        List<File> fs=listFiles(parentFile,filterType);
        //List<File> fs=listFiles(parentFile,null);
        System.out.println("size:"+listFiles(parentFile,null).size());
        System.out.println("line Num:"+countLine(fs));
        System.out.println("md5:"+DigestUtils.md5Hex(new FileInputStream(md5File)));
        //countLine(List<File> fs)






    }
    public static int countLine(List<File> fs) throws Exception {
        int n=0;
        for(File f:fs){
            BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f),"UTF-8"));
            String tmp=null;
            while((tmp=br.readLine())!=null){
                if(StringUtils.isNotBlank(tmp)){
                    n++;
                }
            }
            br.close();
        }
        return n;
    }

    public static List<File> listFiles(File f,Set<String> filterType){
        File childFile[]=null;
        if(filterType==null||filterType.size()==0) {
            childFile=f.listFiles();
        }else{
            childFile=f.listFiles(new FileFilter() {

                @Override
                public boolean accept(File file) {
                    if(file.isDirectory()){
                        return true;
                    }
                    for(String fType:filterType){
                        if(file.getName().toLowerCase().endsWith(fType)){
                            return true;
                        }
                    }
                    return false;
                }

            });
        }
        List<File> cur=new ArrayList<File>();
        if(childFile!=null&&childFile.length>0){
            for(File cf:childFile){
                if(cf.isDirectory()){
                    cur.addAll(listFiles(cf,filterType));
                }else{
                    cur.add(cf);
                }
            }
            return cur;
        }
        return cur;
    }
}

pom.xml

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>

文/程忠 浏览次数:0次   2023-10-08 12:24:53

相关阅读


评论:
点击刷新

↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑