From 3c72340868c70aa8a867559584a6b733f5357ed7 Mon Sep 17 00:00:00 2001 From: likeguo Date: Thu, 23 Mar 2023 00:16:49 +0800 Subject: [PATCH] add filter read line --- .../main/java/cn/hutool/core/io/FileUtil.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java index 4b5a947c2..6e3720a39 100755 --- a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java @@ -54,6 +54,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.function.Consumer; +import java.util.function.Predicate; import java.util.jar.JarFile; import java.util.regex.Pattern; import java.util.zip.CRC32; @@ -2368,6 +2369,19 @@ public class FileUtil extends PathUtil { return readLines(file, CharsetUtil.CHARSET_UTF_8); } + /** + * 从文件中读取每一行数据 + * + * @param file 文件 + * @param filter 过滤器 + * @return 文件中的每行内容的集合List + * @throws IORuntimeException IO异常 + * @since 3.1.1 + */ + public static List readUtf8Lines(File file, Predicate filter) throws IORuntimeException { + return readLines(file, CharsetUtil.CHARSET_UTF_8, filter); + } + /** * 从文件中读取每一行数据 * @@ -2392,6 +2406,25 @@ public class FileUtil extends PathUtil { return readLines(file, charset, new ArrayList<>()); } + /** + * 从文件中读取每一行数据 + * + * @param file 文件 + * @param charset 字符集 + * @param filter 过滤器 + * @return 文件中的每行内容的集合List + * @throws IORuntimeException IO异常 + */ + public static List readLines(File file, Charset charset, Predicate filter) throws IORuntimeException { + final List result = new ArrayList<>(); + readLines(file, charset, (LineHandler) line -> { + if (Boolean.TRUE.equals(filter.test(line))) { + result.add(line); + } + }); + return result; + } + /** * 按行处理文件内容,编码为UTF-8 *