java高效获取大文件的行数

java高效获取大文件的行数

方式1 : 利用LineNumberReader

public static int getFileLineNum(String filePath) {

try (LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(filePath))){

lineNumberReader.skip(Long.MAX_VALUE);

int lineNumber = lineNumberReader.getLineNumber();

return lineNumber + 1;//实际上是读取换行符数量 , 所以需要+1

} catch (IOException e) {

return -1;

}

}

方式2 : Java8新的工具方法

public static long getFileLineNum(String filePath) {

try {

return Files.lines(Paths.get(filePath)).count();

} catch (IOException e) {

return -1;

}

}

实际上 , Java8的新方法时间上并没有LineNumberReader快 . 经测试如下

文件大小(行数)LineNumberReader耗时Java8方法耗时96562041098 ms1385 ms296916841512 ms2237 ms