diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e60eb77d..c8b525513 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.7.22 (2022-02-21) +# 5.7.22 (2022-02-22) ### 🐣新特性 * 【poi 】 ExcelUtil.readBySax增加对POI-5.2.0的兼容性(issue#I4TJF4@gitee) @@ -11,6 +11,7 @@ * 【json 】 新增TemporalAccessorSerializer * 【core 】 使多个xxxBuilder实现Builder接口,扩展CheckedUtil(pr#545@Gitee) * 【core 】 CheckedUtil删除第二个参数为RuntimeException的方法 +* 【core 】 FileUtil增加getTotalLines方法 ### 🐞Bug修复 * 【cache 】 修复ReentrantCache.toString方法线程不安全问题(issue#2140@Github) 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 bb08dfe50..e0622f7fc 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 @@ -22,12 +22,31 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.URLUtil; import cn.hutool.core.util.ZipUtil; -import java.io.*; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileFilter; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.LineNumberReader; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.RandomAccessFile; +import java.io.Reader; import java.net.URI; import java.net.URL; import java.net.URLConnection; import java.nio.charset.Charset; -import java.nio.file.*; +import java.nio.file.DirectoryNotEmptyException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -554,23 +573,22 @@ public class FileUtil extends PathUtil { } /** - * 计算文件的总行数 + * 计算文件的总行数
+ * 读取文件采用系统默认编码,一般乱码不会造成行数错误。 * * @param file 文件 * @return 该文件总行数 + * @since 5.7.22 */ public static int getTotalLines(File file) { - if (!isFile(file)) { - throw new IORuntimeException("input must be file"); + if (false == isFile(file)) { + throw new IORuntimeException("Input must be a File"); } - - try ( - final BufferedReader reader = getReader(file, CharsetUtil.CHARSET_UTF_8); - final LineNumberReader lineNumberReader = new LineNumberReader(reader) - ) { + try (final LineNumberReader lineNumberReader = new LineNumberReader(new java.io.FileReader(file))) { // 设置起始为1 lineNumberReader.setLineNumber(1); // 跳过文件中内容 + //noinspection ResultOfMethodCallIgnored lineNumberReader.skip(Long.MAX_VALUE); // 获取当前行号 return lineNumberReader.getLineNumber(); diff --git a/hutool-http/src/test/java/cn/hutool/http/RestTest.java b/hutool-http/src/test/java/cn/hutool/http/RestTest.java index 9371c6039..a4c9f92da 100644 --- a/hutool-http/src/test/java/cn/hutool/http/RestTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/RestTest.java @@ -63,6 +63,7 @@ public class RestTest { .body(JSONUtil.createObj() .set("advertiser_ids", new Long[] {1690657248243790L}) .set("fields", new String[] {"id", "name", "status"}).toString()); + Console.log(request); Console.log(request.execute().body()); } }