正则表达式的运用
import java.io.*;
//import java.util.regex.*;
public class TestCountCode {
static int whiteLines = 0;
static int commentLines = 0;
static int commonLines = 0;
public static void main(String[] args) {
File[] child = new File("F:\\java\\eclipse\\workplace\\").listFiles();
for (File f:child) {
if(f.getName().matches(".*\\.java$")) {
func(f);
}
}
System.out.println("whiteLines: "+whiteLines);
System.out.println("commentLines: "+commentLines);
System.out.println("commonLines: "+commonLines);
}
private static void func(File f) {
// TODO Auto-generated method stub
BufferedReader br = null;
String s = "";
boolean flag = false;
try {
br = new BufferedReader(new FileReader(f));
while((s = br.readLine() )!=null) {
if(s.matches("^[\\s&&[^\\n]]*$")&&flag==false) { //readLine 舍去结尾的换行符
whiteLines ++;
}else if(s.startsWith("/*")&& !s.endsWith("*/")) {
commentLines ++;
flag = true;
}else if(s.startsWith("/*")&& s.endsWith("*/")) {
commentLines ++;
}else if(true == flag) {
commentLines ++;
if(s.endsWith("*/")) {
flag =false;
}
}else if(s.startsWith("//")) {
commentLines ++;
}else {
commonLines ++;
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}