From 4b7da5119b32f173c96e575bad130ba2a8ade6b7 Mon Sep 17 00:00:00 2001 From: likeguo Date: Wed, 22 Mar 2023 23:30:03 +0800 Subject: [PATCH 1/4] add filter read line --- .../main/java/cn/hutool/core/io/FileUtil.java | 34 +++++++++++++++++++ 1 file changed, 34 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 4c838288d..d28db5099 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java @@ -13,6 +13,7 @@ import cn.hutool.core.io.file.Tailer; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.io.unit.DataSizeUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Filter; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.CharsetUtil; @@ -49,6 +50,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.zip.CRC32; import java.util.zip.Checksum; @@ -2222,6 +2224,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); + } + /** * 从文件中读取每一行数据 * @@ -2246,6 +2261,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 * From 292ceb594b594d04c6740ce3d91c20ebfe122856 Mon Sep 17 00:00:00 2001 From: likeguo Date: Wed, 22 Mar 2023 23:40:40 +0800 Subject: [PATCH 2/4] add filter read line --- hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java | 2 -- 1 file changed, 2 deletions(-) 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 18a14a9e5..4b5a947c2 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 @@ -14,7 +14,6 @@ import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.io.unit.DataSizeUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.thread.ThreadUtil; -import cn.hutool.core.lang.Filter; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.CharUtil; import cn.hutool.core.util.CharsetUtil; @@ -55,7 +54,6 @@ 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; From 3c72340868c70aa8a867559584a6b733f5357ed7 Mon Sep 17 00:00:00 2001 From: likeguo Date: Thu, 23 Mar 2023 00:16:49 +0800 Subject: [PATCH 3/4] 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 * From d02c66243777b3e7ee7bb5474b93c66372f87f36 Mon Sep 17 00:00:00 2001 From: likeguo Date: Thu, 23 Mar 2023 00:19:20 +0800 Subject: [PATCH 4/4] add filter read line --- hutool-core/src/main/java/cn/hutool/core/io/FileUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6e3720a39..bd8df24b1 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 @@ -302,7 +302,7 @@ public class FileUtil extends PathUtil { /** * 创建File对象,相当于调用new File(),不做任何处理 * - * @param path 文件路径 + * @param path 文件路径,相对路径表示相对项目路径 * @return File * @since 4.1.4 */