统计源代码行数
package com.tool.countline;
import java.io.File;
import com.tool.countline.Service;
public class Main {
/**
* 功能:统计源代码行数
* @author 757225051@qq.com
*/
public static void main(String[] args) {
String fileName="D:\\test";
File file=new File(fileName);
int[]sum=Service.statistics(file);
System.out.println("不包括注释行="+sum[0]+" 行");
System.out.println("不包括空行="+sum[1]+" 行");
System.out.println("不包括空行= "+sum[2]+" 行");
}
}
package com.tool.countline;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Service {
public static int[] statistics(File file){
if(file.isDirectory()){
File[]files=file.listFiles();
int[]sum=new int[]{0,0,0,0,0,0};
for (int i = 0; i < files.length; i++) {
File fl=files[i];
sum=plus(sum,statistics(fl));
}
return sum;
}else{
return read(file);
}
}
private static int[] plus(int[] xx,int[] yy) {
if(xx.length!=yy.length){
throw new RuntimeException("error");
}
int[]last=new int[xx.length];
for (int i = 0; i < yy.length; i++) {
last[i]=xx[i]+yy[i];
}
return last;
}
public static int[] read(File file){
String name=file.getName();
int[]last=new int[]{0,0,0,0,0,0};
int sum1=0;
int sum2=0;
int sum3=0;
if(name.endsWith(".java")){
BufferedReader br=null;
try{
br=new BufferedReader(new FileReader(file));
String line=null;
while((line=br.readLine())!=null){
if(!"".equals(line.trim())){
if(!line.trim().startsWith("//")){
sum1++;
}
sum2++;
}
sum3++;
}
last[0]=sum1; //不包括注释行
last[1]=sum2; //不包括空行
last[2]=sum3; //所有行
last[5]=1;
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}else{
last[0]=0;
last[1]=0;
last[2]=0;
last[3]=0;
last[4]=0;
last[5]=0;
}
return last;
}
}