方式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