统计代码文件数,行数,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>
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑