概述
作爲一個programer 有的時候想統計一下自己寫的代碼量有多少呢,於是就寫了一個小小的工具,統計某個目錄的代碼文件的行數,快來看看你的代碼量上10w行了嗎?
其實就是對文件目錄進行遞歸操作,遇到文件(你要統計的代碼文件後綴名),打開它統計行數。直到遍歷完成
給出簡單的代碼
public class CountCode {
static String FileType=".cs";
public static void main(String[] args) {
File root=new File("c:\\");
countAllFiles(root);
System.out.println("代碼數:"+allcount);
}
private static void find(String rootFilePath,String fileName,int depth,int returnSize,boolean fuzzy,ArrayList<String> returnFiles){
ArrayDeque<String> filePathQueue=new ArrayDeque<String>();
filePathQueue.add(rootFilePath);
String []fileList;
String currentFilePath;
String temp;
int depthCount=1;
while(!filePathQueue.isEmpty()){
currentFilePath=filePathQueue.remove();
fileList=new File(currentFilePath).list();
if(fileList!=null){
for(int i=0;i<fileList.length;i++){
temp=currentFilePath+"\\"+fileList[i];
if(compare(fileList[i], fileName, fuzzy)){
returnFiles.add(temp);
}
if(returnFiles.size()==returnSize){
break;
}
if(!new File(temp).isFile()){
filePathQueue.add(temp);
}
}
}
}
if(depthCount++==depth){
return;
}
}
private static boolean compare(String currentFileName,String fileName,boolean fuzzy){
if(currentFileName.contains(fileName)){
return true;
}else{
return false;
}
}
static int allcount=0;
final static void countAllFiles(File dir){
File[] fs = dir.listFiles();
for(int i=0; i<fs.length; i++)
{
if(fs[i].isDirectory())
{
try
{
countAllFiles(fs[i]);
}
catch(Exception e){}
}else
{
if(fs[i].getName().endsWith(FileType))
{
System.out.println(fs[i].getAbsolutePath());
allcount+=count(fs[i]);
}
}
}
}
public static int count(File file)
{
int count=0;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String tempString = null;
while ((tempString = reader.readLine()) != null)
{
count++;
}
reader.close();
} catch (Exception e) {
return count;
}
return count;
}
}
運行結果截圖