From 313cadbdfafd25172c174222e7c05499f95f8ed5 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 21 Jun 2024 20:32:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DTailer=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E8=AF=BB=E5=8F=96=E8=A1=8C=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../src/main/java/cn/hutool/core/io/file/Tailer.java | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) 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; }