需要统计项目的代码规模,文件数较多,人工一个一个加实在是太繁琐。写段代码实现此需要。
代码其实尚有可以优化的地方,在获取文件列表之处,可以加上过滤器。
源码如下:
package countproject.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
*
* @author 吴慧文
* @email wuhuiwen@foxmail.com
* @date 2011-5-25
*
*/
public class CountUtil {
public static int getLineCount(File file,String fileSuffix){
int countSum= 0;
if(file.isDirectory()){
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
countSum +=getLineCount(files[i],fileSuffix);
}
return countSum;
}else{
if(!file.getAbsolutePath().endsWith(fileSuffix)){
return 0;
}
System.out.println(file.getAbsolutePath());
int count=0;
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(file));
while(reader.readLine()!=null){
count++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally{
if(null!=reader){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println(count);
return count;
}
}
public static void main(String[] args) {
if(args.length!=2){
System.out.println("args[2] : filePath fileTypeSuffix");
return;
}
System.out.println(CountUtil.getLineCount(new File(args[0]),args[1]));
}
}