流写文件统计

  1. import java.io.*;  
  2. import java.util.*;  
  3.   
  4. class  JavaCounter  
  5. {  
  6.     private int fileCount;                      //记录java文件数目  
  7.     private int rowCount;                       //记录代码行数  
  8.     private int classCount ;                        //记录类数量  
  9.     private Properties classes = new Properties();  //记录所有的类名,里面每一个元素都是 (类名:个数) 成对出现  
  10.     private int maxClassCount ;                 //记录最多类名的次数  
  11.     private String maxClassName;                    //记录最多类名的名称  
  12.   
  13.     public static void main(String[] args) throws IOException  
  14.     {  
  15.         JavaCounter javaCounter = new JavaCounter();  
  16.         javaCounter.countFiles(new File("F://javasourcecode"));  
  17.         //javaCounter.countFiles(new File("e:/t1102/j2se"));  
  18.         javaCounter.countMaxClassName();  
  19.         javaCounter.saveInfo("javaInfo.txt");  
  20.         javaCounter.saveClasses("classInfo.txt");  
  21.     }  
  22.     //扫描指定的目录,记录该路径下能找的到的java源文件的数目  
  23.     public void countFiles(File dir) throws IOException{  
  24.         //列出该目录下的所有文件,做循环  
  25.         File[] files = dir.listFiles();  
  26.         for(int i=0;i
  27.             //如果是个文件  
  28.             if(files[i].isFile()){  
  29.                 //如果是java文件,则文件数目加1,调用方法计算该文件中的行数  
  30.                 if(files[i].getName().endsWith(".java")){  
  31.                     this.fileCount++;  
  32.                     this.countRows(files[i]);//a.java  
  33.                 }else if(files[i].getName().endsWith(".class")){//如果是class文件,则调用方法计算类数量  
  34.                     this.countClasses(files[i].getName());  
  35.                 }  
  36.             }  
  37.             //如果是个路径,则嵌套调用本方法  
  38.             else{  
  39.                 countFiles(files[i]);  
  40.             }  
  41.         }  
  42.     }  
  43.     //扫描指定的java文件,记录文件中代码的行数  
  44.     public void countRows(File javaFile) throws IOException{  
  45.         //构造成BufferedReader,便于记录行数  
  46.         BufferedReader br = new BufferedReader(new FileReader(javaFile));  
  47.         String line;  
  48.         while( (line=br.readLine())!=null ){  
  49.             this.rowCount++;  
  50.         }  
  51.         br.close();  
  52.     }  
  53.     //记录类的数量,并将类名存储起来  
  54.     public void countClasses(String className){//b.c  
  55.         this.classCount++;  
  56.         className = className.substring(0,className.length()-6);  
  57.         //判断集合里是否已经有同名的类,如果有的话就将其值加1,如果没有就新增一个  
  58.         if(classes.getProperty(className)!=null){  
  59.             int count = Integer.parseInt(classes.getProperty(className));  
  60.             classes.setProperty(className,count+1+"");  
  61.         }else{  
  62.             classes.setProperty(className,1+"");  
  63.         }  
  64.     }  
  65.     //统计最大的类名的个数  
  66.     public void countMaxClassName(){  
  67.         Enumeration enu = classes.propertyNames();  
  68.         while(enu.hasMoreElements()){  
  69.             String cname = (String)enu.nextElement();  
  70.             int c = Integer.parseInt(classes.getProperty(cname));  
  71.             if(c>maxClassCount){  
  72.                 maxClassCount=c;  
  73.                 maxClassName=cname;  
  74.             }  
  75.         }  
  76.     }  
  77.     //将这几个变量的信息输出到一个文件保存起来  
  78.     public void saveInfo(String fileName) throws IOException{  
  79.         PrintWriter pw = new PrintWriter(new FileWriter(fileName));  
  80.         pw.println("java源文件个数:"+this.fileCount);  
  81.         pw.println("共计行数:"+this.rowCount);  
  82.         pw.println("共计类数:"+this.classCount);  
  83.         pw.println("最多的类名是:"+this.maxClassName+",出现了 "+this.maxClassCount+" 次");  
  84.         pw.close();  
  85.     }  
  86.     //将类名及其数量保存起来  
  87.     public void saveClasses(String fileName) throws IOException{  
  88.         FileOutputStream fos = new FileOutputStream(fileName);  
  89.         this.classes.store(fos,"all classes and classes count");  
  90.         fos.close();  
  91.     }  
  92. }  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值