问题描述
喜:给定一个任意文件(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函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!