本文介绍了API进行简单的文件(行数)的Java函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

喜:给定一个任意文件(JAVA),我要算行。

Hi : Given an arbitrary file (java), I want to count the lines.

这是很容易的,例如,使用Apache的FileUtils.readLines(...)方法...

This is easy enough, for example, using Apache's FileUtils.readLines(...) method...

不过,对于大文件,代替阅读整个文件是荒唐可笑的(即只计算行)。

However, for large files, reading a whole file in place is ludicrous (i.e. just to count lines).

一个土生土长的一种选择:创建的BufferedReader或使用FileUtils.lineIterator功能,并计算行。

One home-grown option : Create BufferedReader or use the FileUtils.lineIterator function, and count the lines.

然而,我猜想有可能是(低内存),最新的API做简单的大文件的操作与锅炉板的Java最少量的---是否有这样的库或功能存在在任何谷歌,阿帕奇等..开源的Java的任何地方公用程序库?

推荐答案

Java的8一小段路:

Java 8 short way:

 Files.lines(Paths.get(fileName)).count();

但大多数内存effiecint:

But most memory effiecint:

try(InputStream in = new BufferedInputStream(new FileInputStream(name))){
    byte[] buf = new byte[4096 * 16];
    int c;
    int lineCount = 0;
    while ((c = in.read(buf)) > 0) {
       for (int i = 0; i < c; i++) {
           if (buf[i] == '\n') lineCount++;
       }
    }
}

您不必String对象在这项任务的。

You do not need String objects in this task at all.

这篇关于API进行简单的文件(行数)的Java函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 18:48