kwing

统计文件行数,推荐使用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要简洁许多

posted on 2019-11-19 18:06  kwing  阅读(1011)  评论(0编辑  收藏  举报

导航

返回顶部
>>
<<