java统计某文件或目录下指定路径的文件数量及行数
2008-12-24 16:26
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class StatLine {
//总行数
static int rowCount=0;
static BufferedReader br;
//文件类型
static String fileType;
//忽略空白行
static boolean ignoreBlank;
//总文件数
static int fileCount=0;

public static void main(String[] args) {
   if(args.length==0) {
    System.out.println("Usage:java StatLine path fileType [ignoreBlank]");
    System.out.println("用法:java StatLine 路径 文件类型 [忽略空白行]");
    System.out.println("例子(Demo):java StatLine e:\\xgz\\project java 0");
    System.out.println("注解:path:系统中某一路径,fileType:要统计的文件类型,ignoreBlank:1为不统计空白行 0为全部统计");
    return ;
   }
   long startTime,endTime;
   String filePath = args[0];
   fileType = args[1];
   //1为忽略空白行 0不忽略
   try {
    ignoreBlank = "1".equals(args[2])?true:false;
   } catch (RuntimeException e) {
    ignoreBlank = false;
   }
   File rootDirectory = new File(filePath);
   startTime = System.currentTimeMillis();
   isDir(rootDirectory);
   endTime = System.currentTimeMillis();
   System.out.println("Report:");
   System.out.println("路径:"+filePath);
   System.out.println("类型:"+fileType);
   System.out.println("共"+fileCount+"个文件 "+rowCount+"行 耗时:"+(endTime-startTime)/1000+"."+(endTime-startTime) % 1000+"秒");
}

//验证它是否为一个文件夹
public static void isDir(File file) {
   if(file.isDirectory()){
    File[] files = file.listFiles();
    for(int i=0;i<files.length;i++) {
     isDir(files[i]);
    }
   }else {
    fileRow(file);
   }
}

//给定一个文件输出它有多少行
public static void fileRow(File file) {
   if(file.getName().indexOf("."+fileType)!=-1) {
    ++fileCount;
    try {
     br=new BufferedReader(new FileReader(file));
    
     while(true) {
      String line = br.readLine();
      if(line!=null){
       if(ignoreBlank) {
        if(!"".equals(line)){
         ++rowCount;
        }
       }else {
        ++rowCount;
       }
      }
      if(line==null) {
       break;
      }
     }
     br.close();
    } catch (FileNotFoundException e) {
     System.out.println("您所指定的文件或目录不存在");
     e.printStackTrace();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
}
}