diff --git a/CHANGELOG.md b/CHANGELOG.md index a62b43cdc..ce282fa98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ------------------------------------------------------------------------------------------------------------- -# 5.7.18 (2021-12-23) +# 5.7.18 (2021-12-24) ### 🐣新特性 * 【core 】 新增CollStreamUtil.groupKeyValue(pr#479@Gitee) @@ -15,6 +15,7 @@ * 【core 】 增加CollStreamUtil.groupBy(pr#484@Gitee) * 【core 】 增加CollUtil.setValueByMap(pr#482@Gitee) * 【core 】 LocalDateTimeUtil增加endOfDay重载(issue#2025@Github) +* 【core 】 IoCopier增加setFlushEveryBuffer方法(issue#2022@Github) * ### 🐞Bug修复 * 【core 】 LineReadWatcher#onModify文件清空判断问题(issue#2013@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/io/copy/IoCopier.java b/hutool-core/src/main/java/cn/hutool/core/io/copy/IoCopier.java index b477a892e..156da58ee 100755 --- a/hutool-core/src/main/java/cn/hutool/core/io/copy/IoCopier.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/copy/IoCopier.java @@ -25,6 +25,11 @@ public abstract class IoCopier { */ protected StreamProgress progress; + /** + * 是否每次写出一个buffer内容就执行flush + */ + protected boolean flushEveryBuffer; + /** * 构造 * @@ -56,4 +61,16 @@ public abstract class IoCopier { protected int bufferSize(long count) { return (int) Math.min(this.bufferSize, count); } + + /** + * 设置是否每次写出一个buffer内容就执行flush + * + * @param flushEveryBuffer 是否每次写出一个buffer内容就执行flush + * @return this + * @since 5.7.18 + */ + public IoCopier setFlushEveryBuffer(boolean flushEveryBuffer){ + this.flushEveryBuffer = flushEveryBuffer; + return this; + } } diff --git a/hutool-core/src/main/java/cn/hutool/core/io/copy/ReaderWriterCopier.java b/hutool-core/src/main/java/cn/hutool/core/io/copy/ReaderWriterCopier.java index 914cb5fce..07c802650 100755 --- a/hutool-core/src/main/java/cn/hutool/core/io/copy/ReaderWriterCopier.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/copy/ReaderWriterCopier.java @@ -101,6 +101,9 @@ public class ReaderWriterCopier extends IoCopier { break; } target.write(buffer, 0, read); + if(flushEveryBuffer){ + target.flush(); + } numToRead -= read; total += read; diff --git a/hutool-core/src/main/java/cn/hutool/core/io/copy/StreamCopier.java b/hutool-core/src/main/java/cn/hutool/core/io/copy/StreamCopier.java index 170771483..e32cc3404 100755 --- a/hutool-core/src/main/java/cn/hutool/core/io/copy/StreamCopier.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/copy/StreamCopier.java @@ -100,6 +100,9 @@ public class StreamCopier extends IoCopier { break; } target.write(buffer, 0, read); + if(flushEveryBuffer){ + target.flush(); + } numToRead -= read; total += read;