统计文件行数,推荐使用LineNumberReader
一、主题:
读取文本文件最大行数性能比较:lineNumberReader > Files.lines
二、code
1 @Test
2 public void testLineReader() throws IOException {
3 File testFile = new File("D:\\temp\\test\\line.txt");
4 if (!testFile.exists()) {
5 testFile.getParentFile().mkdirs();
6 testFile.createNewFile();
7 FileOutputStream fos = new FileOutputStream(testFile, true);
8 long line = 10000000;
9 while (line-- > 0) {
10 fos.write((line + System.getProperty("line.separator")).getBytes());
11 }
12 }
13
14 long startTime = System.currentTimeMillis();
15 long count = 0;
16 for(int i = 0; i<1000; i++)
17 count = Files.lines(Paths.get(testFile.getPath())).count();
18 long endTime = System.currentTimeMillis();
19 System.out.println("files.lines lines:" + count +"spend time:" + (endTime - startTime) + " ms");
20
21 long startTime2 = System.currentTimeMillis();
22 long fileLength = testFile.length();
23 for(int i = 0; i<1000; i++){
24 LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(testFile));
25 lineNumberReader.skip(fileLength);
26 count = lineNumberReader.getLineNumber();
27 lineNumberReader.close();
28 }
29 long endTime2 = System.currentTimeMillis();
30 System.out.println("lines:" + count +"spend time:" + (endTime2 - startTime2) + " ms");
31 }
二、测试结果:
files.lines lines:10000000spend time:333404 ms
lines:10000000spend time:174362 ms
三、结论:
1.使用LineNumberReader统计速度是Files.lines的两倍
2.Files.lines代码比LineNumberReader要简洁许多
统计文件行数,推荐使用LineNumberReader的更多相关文章
- Shell脚本统计文件行数
Shell脚本统计文件行数 转自 http://www.jb51.net/article/61943.htm 示例:row_count.sh文件 awk '{print NR}' row_cou ...
- Linux统计文件行数
语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...
- wc命令--Linux统计文件行数
语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...
- Linux - wc统计文件行数、单词数或字节数
一 wc简单介绍 wc命令用来打印文件的文本行数.单词数.字节数等(print the number of newlines, words, and bytes in files).在Windows的 ...
- Linux下wc命令统计文件行数/词数/字符数/最长行字符数
wc命令帮助 $ wc --help Usage: wc [OPTION]... [FILE]... or: wc [OPTION]... --files0-from=F Print newline, ...
- linux 使用wc命令统计文件行数、字数及大小
语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所有指定文件的总统计数.字是由空格字符区分开的最大字符串. 该命令各选 ...
- Linux wc -l 统计文件行数存在的问题
1.使用这种方式效率较低,而且不注意可能出现错误 find . -name "*.pc" |xargs wc -l 直接查看 total 不是正确的值. 原因: 这种方式存在一个 ...
- 一个用shell写的统计目录下统计文件行数的代码
此代码是用来回忆当初学的shell脚本,很多知识忘了,写这个花了我三个小时的时间 #!/bin/ksh #count *.c file the num of lineg_csum=0g_hsum=0 ...
- bash 统计文件行数
#假设文件名是:fortest.gtf declare -i fileLinesfileLines=`sed -n '$=' fortest.gtf`echo $fileLines #-------- ...
随机推荐
- kafka入门之broker--日志存储设计
kafaka并不是直接将原省消息写入日志文件的,相反,它会将消息和一些必要的元数据信息大宝在一起封装成一个record写入日志.其实就是我们之前介绍的batch 具体对每个日志而言,kafka又将其进 ...
- mq内存映射
MappedFileQueue的封装 MappedFileQueue是MappedFile的管理容器,MappedFileQueue是对存储目录的封装. 查找MappedFile: 1.根据时间戳来查 ...
- 分布式系统唯一ID
一 什么是分布式系统唯一ID 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识. 如在金融.电商.支付.等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息, ...
- Kafka速度为什么那么快
记录一下 Kafka速度为什么那么快 Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率. 即使是普通 ...
- fist-第三天冲刺随笔
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...
- Django结合Websocket进行WebSSH的实现
什么是webssh? 泛指一种技术可以在网页上实现一个 终端.从而无需 之类的模拟终端工具进行 连接,将 这一比较低层的操作也从 架构扭成了 架构 这样的架构常用在运维制作开发一些堡垒机等系统中,或是 ...
- 老猿学5G扫盲贴:中国移动网络侧CHF的功能分解说明
☞ ░ 老猿Python博文目录░ 一.引言 在<老猿学5G扫盲贴:中国移动网络侧CHF主要功能及计费处理的主要过程>介绍了中国移动CHF的总体功能,同时说明了CHF网元主要由AGF.CD ...
- 译文:二进制序列类型 --- bytes, bytearray
在进行一些内置函数调用时,会发现bytes类型的参数或返回值,这个类型老猿前面没有介绍过,在此就不单独介绍了,直接从Python官网的内容用翻译软件翻译过来稍微修改. 操作二进制数据的核心内置类型是 ...
- 第十三章 Python基础篇结束章
从2019年3月底开始学习Python,4月份开始在CSDN发博客,至今不到半年,老猿认为博客内容中关于Python基础知识的内容已经基本告一段落,本章进入Python基础知识结束章节,对Python ...
- 【Docker】 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二)
系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...