修复Tailer指定初始读取行数的计算错误问题

This commit is contained in:
Looly 2024-06-21 20:32:34 +08:00
parent acb45d2a80
commit 75933bf214

View File

@ -80,7 +80,7 @@ public class Tailer implements Serializable {
* *
* @param file 文件 * @param file 文件
* @param lineHandler 行处理器 * @param lineHandler 行处理器
* @param initReadLine 启动时预读取的行数 * @param initReadLine 启动时预读取的行数1表示一行
*/ */
public Tailer(final File file, final SerConsumer<String> lineHandler, final int initReadLine) { public Tailer(final File file, final SerConsumer<String> lineHandler, final int initReadLine) {
this(file, CharsetUtil.UTF_8, lineHandler, initReadLine, DateUnit.SECOND.getMillis()); this(file, CharsetUtil.UTF_8, lineHandler, initReadLine, DateUnit.SECOND.getMillis());
@ -103,7 +103,7 @@ public class Tailer implements Serializable {
* @param file 文件 * @param file 文件
* @param charset 编码 * @param charset 编码
* @param lineHandler 行处理器 * @param lineHandler 行处理器
* @param initReadLine 启动时预读取的行数 * @param initReadLine 启动时预读取的行数1表示一行
* @param period 检查间隔 * @param period 检查间隔
*/ */
public Tailer(final File file, final Charset charset, final SerConsumer<String> lineHandler, final int initReadLine, final long period) { public Tailer(final File file, final Charset charset, final SerConsumer<String> lineHandler, final int initReadLine, final long period) {
@ -211,7 +211,9 @@ public class Tailer implements Serializable {
int currentLine = 0; int currentLine = 0;
while (nextEnd > start) { while (nextEnd > start) {
// //
if (currentLine > initReadLine) { if (currentLine >= initReadLine) {
// issue#IA77ML initReadLine是行数从1开始currentLine是行号从0开始
// 因此行号0表示一行所以currentLine == initReadLine表示读取完毕
break; break;
} }