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

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

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

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

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

 package Test;

 import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map; /**
* Created by 杨华彬 on 2016/12/19.
*/
public class Stastiscs {
/*
main方法
*/
public static void main(String[] args){
//输入路径,请在括号内输入路径。
File f = new File("D:/LanguagePractise/java/Hadoop/src/main/java");
Map map = new HashMap<String,Integer>(); //用来存放统计出来的行数
Plus(f,map);
//输出统计的结果
getResult(map);
} /*
遍历文件夹
*/
public static void Plus(File f ,Map map){ File[] files = f.listFiles();//获取传入路径的所有文件 //遍历这些文件,需求是CVS中的不统计,所以加判断 for (File a : files) {
//如果文件名是CVS的就跳过
if(a.getName().equals("CVS")) {
continue;
}else {
//如果a是文件的话就进入下一级目录,否则就统计行数
if (a.isDirectory()) {
Plus(a,map);
}else{
map = lineNumber(a.getAbsolutePath(),map); //否者调方法统计行数
}
}
} } /*
统计相应文件的行数
*/
public static Map<String,Integer> lineNumber(String f,Map map){
//定义字符流读取文件
FileReader fileReader = null;
try {
fileReader = new FileReader(f);
} catch (IOException e){
e.printStackTrace();
System.out.println("输入的路径不正确");
} BufferedReader bufferedReader= new BufferedReader(fileReader); //从字节流中升级为字符流,方便按行读取。
int index = 0; try {
while (bufferedReader.readLine()!=null){
index++;
}
map.put(f,index); //将结果放到map中 }catch (IOException e){
e.printStackTrace();
System.out.println("这个文件读不到!");
}finally {
if(fileReader != null){
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return map;
}
} /*
将文件的行数存放在一个map中,然后输出行数的和
*/
public static void getResult(Map map){
int sum = 0;
//使用iterator遍历map集合
Iterator<Map.Entry<String,Integer>> entries =
map.entrySet().iterator(); while (entries.hasNext()){
Map.Entry<String,Integer> entry = entries.next();
System.out.println(entry.getKey()+"的行数是:"+entry.getValue());
sum += entry.getValue();
} System.out.println("总行数是:"+sum); }
}
 

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

  1. Python按顺序读取文件夹中文件

    参考资料: https://blog.csdn.net/qq_22227123/article/details/79903116 https://blog.csdn.net/merdy_xi/arti ...

  2. python批量处理文件夹中文件的问题

    用os模块读取文件夹中文件 原来的代码: import osfrom scipy.misc import imread filenames=os.listdir(r'./unprocess')for ...

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

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  4. php获取指定文件夹中文件名称

    /** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...

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

    /// <summary>        /// 删除log文件末尾中指定的行数        /// </summary>        /// <param name ...

  6. Java访问文件夹中文件的递归遍历代码Demo

    上代码: import java.io.File; /* * 需求:对指定目录进行所有内容的列出(包含子目录中的内容) * 也可以理解为 深度遍历. */ public class FindAllFi ...

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

    string path = "~/Document/Introduction/团队管理制度/";            DirectoryInfo dirinfo = new Di ...

  8. 【linux】复制文件夹中文件,排除部分文件

    如下 cp `ls|grep -v -E '*json|out'|xargs` /home/data/ 用grep -v  表示排除, -E 表示正则 ls|grep -v -E '*json|out ...

  9. Python之获取文件夹中文件列表以及glob与fnmatch模块的使用

    获取文件夹中的文件列表 print(os.listdir("../secondPackage")) # ['__init__.py', 'secondCookBook.py', ' ...

随机推荐

  1. Git怎样撤销一次分支的合并Merge

    出现的问题: 某一天,所有的开发文件已经在development分支上,但是这时候,线上出了一个问题,需要及时修复,于是从master分支上,拉了一个bug分支,进行处理,master分支本应合并bu ...

  2. js获取输入框中当前光标位置并在此位置插入字符串的方法(angularjs+ts)

    一半是参照别人代码,一半是自己代码,略笨拙,如果有更好的方法希望分享. 获取当前光标位置的方法 getCaretPosition (obj:any) { //获取输入框中当前光标的位置,obj为此输入 ...

  3. 解决Linux下启动Tomcat遇到Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

    找到启动路径所在的目录: cd bin/ vi catalina.sh 加入以下信息: export JAVA_HOME=/home/gongzi/http/jdk1.6.0_26 export JR ...

  4. Généralement c'est un mélange qui me devient personnellement

    Parmi mes plus grands problèmes personnels avec maisons de rue conventionnelles est en fait ils sont ...

  5. 【转载】如何用IntelliJ IDEA 14 创建Web项目

    首先要理解一个概念:在IntelliJ IDEA中"new Project"相当于eclipse中的工作空间(Workspace),而"new Module"相 ...

  6. 保留password模式文本框textbox内的数据不丢失。

    在asp.net 2.0环境下,使用textbox,提交到服务器再传回,如果textbox是password模式的,那么textbox内的密码(星号),就没有了! protected override ...

  7. hibernate学习一(hibernate简介与准备)

    一.hibernate简介 Hibernate是一个开放源代码的对象-关系映射(Object/Relational Mapping 即 ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJ ...

  8. juery实现贪吃蛇的游戏

    今天用juery做了一个贪吃蛇的游戏,代码比较简陋,不过作为这些天学习juery的成果,非常有成就感.另外关于代码内容如有雷同不胜荣幸. 更改了下 让头和身子的颜色不一样 这样好区分些,虽然还是不怎么 ...

  9. 对路径的访问被拒绝,解决之后又报-未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。

    服务器环境:Server 2008  64位系统 问题:在导入Excel题录表时报错,1对路径的访问被拒绝,2未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序. 解决方案 ...

  10. 通过JAVA程序测试闰年

    首先简要介绍一下公历上规定的闰年:四年一闰,百年不闰,四百年再闰. 针对这一规则,简要的设计部分测试用例: 附(测试截图): 以下为该程序代码段: import javafx.application. ...