package regexp;
import java.io.BufferedReader;
import java.io.File;
import java.io.FilePermission;
import java.io.FileReader;
import java.text.Normalizer;
public class countline {
static long normalLines=0;
static long commentLines=0;
static long whiteLines=0;
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("F:\\src\\java\\dao\\impl");//要统计的代码存放的所在的文件夹路径
File[] codeFiles=f.listFiles();
for(File child: codeFiles){
if(child.getName().matches(".*\\.java$")){
parse(child);
}
}
System.out.println("normalLines:"+normalLines);
System.out.println("commentLines:"+commentLines);
System.out.println("whiteLines:"+whiteLines);
}
private static void parse(File f) {
BufferedReader bReader=null;
boolean comment=false;
try {
bReader=new BufferedReader(new FileReader(f));
String line=" ";
while((line=bReader.readLine())!=null)
{
line=line.trim();
if(line.matches("^[\\s&&[^\\n]]*$")){
whiteLines++;
}else if(line.startsWith("/*")&&!line.endsWith("*/")){
commentLines++;
comment=true;
}else if(line.startsWith("/*")&&line.endsWith("*/")){
commentLines++;
}
else if(true==comment){
commentLines++;
if(line.endsWith("*/")){
comment=false;
}
}else if(line.endsWith("//")){
commentLines++;
}
else {
normalLines++;
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(bReader!=null){
try {
bReader.close();bReader=null;
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
}
利用正则表达式编写的代码统计工具
最新推荐文章于 2024-11-03 15:18:47 发布