使用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 }
时间: 2024-10-13 10:14:27

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

C# 将文件夹中文件复制到另一个文件夹

C# 将文件夹中文件复制到另一个文件夹 //新建一个文件夹 var imgPath = Directory.GetCurrentDirectory() + "\\DevicePic1"; if (!Directory.Exists(imgPath)) { Directory.CreateDirectory(imgPath); } var a = picpath;//需要进行复制的图片的路径 var b= a.Substring(a.LastIndexOf('.'));//截取后缀名 v

删除log文件末尾中指定的行数

/// <summary>        /// 删除log文件末尾中指定的行数        /// </summary>        /// <param name="file">文件路径</param>        /// <param name="line">删除的行数</param>        public static void deleteLogToLine(string

使用IO流实现对特殊文件及文件夹中文件拷贝到指定文件中

本程序可以实现将自己指定的文件类型的文件拷贝到自己想放的文件中,比如一个文件夹中有很多文件,那么我们想把所有的TXT文件拷贝到自己指定的文件中.(靠背笔记) package com.blueZhang; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept

C#实现对指定文件夹中文件按修改时间排序

string path = "~/Document/Introduction/团队管理制度/";            DirectoryInfo dirinfo = new DirectoryInfo(Server.MapPath(path));            FileInfo[] Files = dirinfo.GetFiles();            Array.Sort<FileInfo>(Files, new FIleLastTimeComparer(

统计源文件夹中代码的行数

public class LineCounter { public static void main(String[] args) { String path = "D:/workspace/LineCounter"; int count = getAllJavaFilesLineCount(new File(path)); System.out.println("总行数:" + count); } /** * 使用递归实现统计这个文件夹中(包含子孙文件夹中的)的所

python文件夹中文件读取踩坑

Q: 进行数据集图片预处理时,初始命名如下图(Fig1左),发现读取文件时,读取的结构并非如所设想的那样顺序读取 Fig 1 A: pyhton读取文件的时候,按照文件名的ascii码中的顺序进行逐位排序,于是编写以下代码,更改命名规则,程序如下 1 # -*- coding:utf-8 -*- 2 # ------------------------------ 3 # @Time :2019/5/26 10:55 4 # @Author :jonie 5 # @Email :[email p

使用.NET统计文件夹中文件总数

软件下载: http://hovertree.com/h/bjaf/hwqtjwjs.htm 截图: 使用方法:点击按钮,选择文件夹,就可以显示文件夹中包含的文件总数. 这个项目包含在HoverTree解决方案中. 源码下载:http://hovertree.com/h/bjaf/cao15h74.htm 推荐:http://www.cnblogs.com/roucheng/p/yjcd.html

获得assets文件夹中文件内容

/** * @param fileName * @return assets中文件的字符串 */ public String getFromAssets(String fileName){ String result=""; try { InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) ); BufferedReader bufReader =

static文件夹中文件引用方式,如html页面引用js

1 创建static文件夹,在项目下 2 index页面简单设置,红色 3 在settings页面配置最后添加,staticfiles_dirs,必须逗号结尾,引用用别名 原文地址:https://www.cnblogs.com/wfl9310/p/9397455.html