From a61175f42515b92ef4e1b47b80fca46893e43644 Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 20 May 2023 03:17:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0CsvWriteConfig.setEndingLineB?= =?UTF-8?q?reak=E9=85=8D=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../hutool/core/text/csv/CsvWriteConfig.java | 18 ++++++++++++++++++ .../cn/hutool/core/text/csv/CsvWriter.java | 5 +++++ 3 files changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f43d8f9fd..045faffde 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * 【core 】 FileUtil.getMimeType增加webp识别(pr#997@Gitee) * 【core 】 SyncFinisher增加setExceptionHandler方法(issue#I716SX@Gitee) * 【core 】 FileTypeUtil.getType增加文件判断(pr#3112@Github) +* 【core 】 增加CsvWriteConfig.setEndingLineBreak配置项(issue#I75K5G@Gitee) ### 🐞Bug修复 * 【core 】 修复URLUtil.decode无法解码UTF-16问题(issue#3063@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java index eff5b6430..ea1e39150 100755 --- a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriteConfig.java @@ -21,6 +21,12 @@ public class CsvWriteConfig extends CsvConfig implements Seriali */ protected char[] lineDelimiter = {CharUtil.CR, CharUtil.LF}; + /** + * 文件末尾是否添加换行符
+ * 按照https://datatracker.ietf.org/doc/html/rfc4180#section-2 规范,末尾换行符可有可无。 + */ + protected boolean endingLineBreak; + /** * 默认配置 * @@ -51,4 +57,16 @@ public class CsvWriteConfig extends CsvConfig implements Seriali this.lineDelimiter = lineDelimiter; return this; } + + /** + * 文件末尾是否添加换行符
+ * 按照https://datatracker.ietf.org/doc/html/rfc4180#section-2 规范,末尾换行符可有可无。 + * + * @param endingLineBreak 文件末尾是否添加换行符 + * @return this + */ + public CsvWriteConfig setEndingLineBreak(boolean endingLineBreak) { + this.endingLineBreak = endingLineBreak; + return this; + } } diff --git a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriter.java b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriter.java index 5c386214e..5dbe1f232 100755 --- a/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriter.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/csv/CsvWriter.java @@ -334,8 +334,13 @@ public final class CsvWriter implements Closeable, Flushable, Serializable { return this; } + @SuppressWarnings("resource") @Override public void close() { + if(this.config.endingLineBreak){ + //https://gitee.com/dromara/hutool/issues/I75K5G + writeLine(); + } IoUtil.close(this.writer); }