Java文件中的行数

问题:

我使用巨大的数据文件,有时我只需要知道这些文件中的行数,通常我打开它们并逐行读取,直到我到达文件的末尾
我想知道是否有更聪明的方法来做到这一点

回答:

这是迄今为止发现的最快版本,比readLines快6倍。在150MB的日志文件上,这需要0.35秒,而使用readLines()时则为2.40秒。只是为了好玩,linux’wc -l命令需要0.15秒。

public static int countLines(String filename) throws IOException {
InputStream is = new BufferedInputStream(new FileInputStream(filename));
try {
byte[] c = new byte[1024];
int count = 0;
int readChars = 0;
boolean empty = true;
while ((readChars = is.read(c)) != -1) {
empty = false;
for (int i = 0; i < readChars; ++i) { if (c[i] == '\n') { ++count; } } } return (count == 0 && !empty) ? 1 : count; } finally { is.close(); } } [/code]     Code问答: http://codewenda.com/topics/python/
Stackoverflow: Number of lines in a file in Java

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

16 − = 9