import java.io.IOException; public class Code { public static void main(String args[]) throws IOException{ new SystemIn(); } }
import java.io.*; public class SystemIn { static InputStream in=System.in; //键盘录入 static StringBuilder sb=new StringBuilder(); //建立缓冲区 SystemIn() throws IOException{ String file; String type; System.out.println("请输入文件目录"); file=ReadIn(); sb.delete(0,sb.length()); System.out.println("请输入文件类型"); type=ReadIn(); Filecount count=new Filecount(file,type); } public static String ReadIn() throws IOException{ { String name; while(true){ int ch=in.read(); if(ch=='\r') continue; if(ch=='\n') { name=sb.toString(); break; } else{ sb.append((char)ch); } } } return sb.toString(); } }
import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Filecount { String file; String type; int filenum; Filecount(String file,String type) throws IOException{ this.file=file; this.type=type; System.out.println(file); File dir = new File(file); List<File> list = new ArrayList<File>(); count(dir,list); } public void count(File dir,List<File> list) throws IOException{ // 计算目录下有类型文件个数 File[] files = dir.listFiles(); filenum=0; for(File file : files) { if(file.getName().endsWith(type)){ filenum++; System.out.println(file.getName()); new SumCode(file); } } System.out.println(type+"类型文件个数:"+filenum); } }
import java.io.*; public class SumCode { int BlankLine=0; int CommentLine=0; int CodeLine=0; int SumLine=0; String regex="^[\\s&&[^\\n]]*$"; SumCode(File file) throws IOException { boolean flag=false; BufferedReader br; br=new BufferedReader(new FileReader(file)); String line=null; while((line=br.readLine())!=null){ SumLine++; if (line.matches("^[\\s&&[^\\n]]*$")) { BlankLine++; } else if (line.startsWith("/*") && !line.endsWith("*/")) { CommentLine++; flag = true; } else if (flag==true) { CommentLine++; if (line.endsWith("*/")) { flag = false; } } else if (line.startsWith("//")) { CommentLine++; } else { CodeLine++; } } br.close(); System.out.println("空行数:"+BlankLine); System.out.println("注释行数:"+CommentLine); System.out.println("代码行数:"+CodeLine); System.out.println("总行数:"+SumLine); } }