diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ed5fccea..787ce7868 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ * 【core 】 修复PathMover.moveContent问题(issue#IA5Q8D@Gitee) * 【db 】 修复PooledConnection可能的数据库驱动未找到问题(issue#IA6EUQ@Gitee) * 【http 】 修复Mac下的微信浏览器被识别为移动端问题(issue#IA74K2@Gitee) +* 【core 】 修复Tailer指定初始读取行数的计算错误问题(issue#IA77ML@Gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.28(2024-05-29) diff --git a/hutool-core/src/main/java/cn/hutool/core/io/file/Tailer.java b/hutool-core/src/main/java/cn/hutool/core/io/file/Tailer.java index e6a6e16b6..61faef230 100755 --- a/hutool-core/src/main/java/cn/hutool/core/io/file/Tailer.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/file/Tailer.java @@ -68,7 +68,7 @@ public class Tailer implements Serializable { * * @param file 文件 * @param lineHandler 行处理器 - * @param initReadLine 启动时预读取的行数 + * @param initReadLine 启动时预读取的行数,1表示一行 */ public Tailer(File file, LineHandler lineHandler, int initReadLine) { this(file, CharsetUtil.CHARSET_UTF_8, lineHandler, initReadLine, DateUnit.SECOND.getMillis()); @@ -91,7 +91,7 @@ public class Tailer implements Serializable { * @param file 文件 * @param charset 编码 * @param lineHandler 行处理器 - * @param initReadLine 启动时预读取的行数 + * @param initReadLine 启动时预读取的行数,1表示一行 * @param period 检查间隔 */ public Tailer(File file, Charset charset, LineHandler lineHandler, int initReadLine, long period) { @@ -197,7 +197,9 @@ public class Tailer implements Serializable { int currentLine = 0; while (nextEnd > start) { // 满 - if (currentLine > initReadLine) { + if (currentLine >= initReadLine) { + // issue#IA77ML initReadLine是行数,从1开始,currentLine是行号,从0开始 + // 因此行号0表示一行,所以currentLine == initReadLine表示读取完毕 break; }