使用java读取文件夹中文件的行数

Posted huabingood

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java读取文件夹中文件的行数相关的知识,希望对你有一定的参考价值。

使用java统计某文件夹下所有文件的行数  

  经理突然交代一个任务:要求统计某个文件夹下所有文件的行数。在网上查了一个多小时没有解决。后来心里不爽就决定自己写一个java类用来统计文件的行数,于是花了两个小时将代码写出(可见我的java功底还是挺烂的)。虽然有很多有待改进的地方,依然有纪念意义。

  本java类的核心是通过BufferedReader类的readLine()方法,间接的统计行数;通过递归遍历文件。

  这个类只是写来完成任务的。结果不是很严谨,许多情况并没考虑到:比如判断想读取某一类文件怎么办?这个需要同学们努力了。

  想复用的同学只需将main方法中的路径改掉即可。

  1 package Test;
  2 
  3 
  4 import java.io.*;
  5 import java.util.HashMap;
  6 import java.util.Iterator;
  7 import java.util.Map;
  8 
  9 /**
 10  * Created by 杨华彬 on 2016/12/19.
 11  */
 12 public class Stastiscs {
 13     /*
 14     main方法
 15      */
 16     public static void main(String[] args){
 17         //输入路径,请在括号内输入路径。
 18         File f = new File("D:/LanguagePractise/java/Hadoop/src/main/java");
 19         Plus(f);
 20     }
 21 
 22     /*
 23     遍历文件夹
 24      */
 25     public static void Plus(File f ){
 26 
 27         File[] files = f.listFiles();//获取传入路径的所有文件
 28         Map map = new HashMap<String,Integer>();  //用来存放统计出来的行数
 29 
 30         //遍历这些文件,需求是CVS中的不统计,所以加判断
 31 
 32         for (File a : files) {
 33             //如果文件名是CVS的就跳过
 34             if(a.getName().equals("CVS")) {
 35                 continue;
 36             }else {
 37                 //如果a是文件的话就进入下一级目录,否则就统计行数
 38                 if (a.isDirectory()) {
 39                     Plus(a);
 40                 }else{
 41                     map = lineNumber(a.getAbsolutePath(),map);  //否者调方法统计行数
 42                 }
 43             }
 44         }
 45 
 46         //输出统计的结果
 47         getResult(map);
 48 
 49     }
 50 
 51     /*
 52     统计相应文件的行数
 53      */
 54     public static Map<String,Integer> lineNumber(String f,Map map){
 55         //定义字符流读取文件
 56         FileReader fileReader = null;
 57         try {
 58             fileReader = new FileReader(f);
 59         } catch (IOException e){
 60             e.printStackTrace();
 61             System.out.println("输入的路径不正确");
 62         }
 63 
 64         BufferedReader bufferedReader= new BufferedReader(fileReader);          //从字节流中升级为字符流,方便按行读取。
 65         int index = 0;
 66 
 67 
 68         try {
 69             while (bufferedReader.readLine()!=null){
 70                 index++;
 71             }
 72             map.put(f,index);    //将结果放到map中
 73 
 74 
 75         }catch (IOException e){
 76             e.printStackTrace();
 77             System.out.println("这个文件读不到!");
 78         }finally {
 79             if(fileReader != null){
 80                 try {
 81                     fileReader.close();
 82                 } catch (IOException e) {
 83                     e.printStackTrace();
 84                 }
 85             }
 86             return map;
 87         }
 88     }
 89 
 90     /*
 91     将文件的行数存放在一个map中,然后输出行数的和
 92      */
 93     public static void getResult(Map map){
 94         int sum = 0;
 95         //使用iterator遍历map集合
 96         Iterator<Map.Entry<String,Integer>> entries =
 97                 map.entrySet().iterator();
 98 
 99         while (entries.hasNext()){
100             Map.Entry<String,Integer> entry = entries.next();
101             System.out.println(entry.getKey()+"的行数是:"+entry.getValue());
102             sum += entry.getValue();
103         }
104 
105         System.out.println("总行数是:"+sum);
106 
107     }
108 }

 

以上是关于使用java读取文件夹中文件的行数的主要内容,如果未能解决你的问题,请参考以下文章

使用POI读取EXCEL中的数据如何获得表中实际数据的行数?

用c语言怎么读取txt文件中的行数

转载python计算文件的行数和读取某一行内容的实现方法

如何有效地读取 LARGE 文本文件中的行数

读取大文本文件VB6中的行数

VB中读入文件,如何获得文本的行数