diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java
index 6e2ebe14f..c1cc7265a 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileUtil.java
@@ -2152,28 +2152,24 @@ public class FileUtil extends PathUtil {
/**
* 获得一个输出流对象
*
- * @param file 文件
+ * @param file 文件
+ * @param options 选项,如追加模式传{@link java.nio.file.StandardOpenOption#APPEND}
* @return 输出流对象
* @throws IORuntimeException IO异常
*/
- public static BufferedOutputStream getOutputStream(final File file) throws IORuntimeException {
- final OutputStream out;
- try {
- out = Files.newOutputStream(touch(file).toPath());
- } catch (final IOException e) {
- throw new IORuntimeException(e);
- }
- return IoUtil.toBuffered(out);
+ public static BufferedOutputStream getOutputStream(final File file, final OpenOption... options) throws IORuntimeException {
+ return PathUtil.getOutputStream(touch(file).toPath(), options);
}
/**
* 获得一个输出流对象
*
- * @param path 输出到的文件路径,绝对路径
+ * @param path 输出到的文件路径,绝对路径
+ * @param options 选项,如追加模式传{@link java.nio.file.StandardOpenOption#APPEND}
* @return 输出流对象
* @throws IORuntimeException IO异常
*/
- public static BufferedOutputStream getOutputStream(final String path) throws IORuntimeException {
+ public static BufferedOutputStream getOutputStream(final String path, final OpenOption... options) throws IORuntimeException {
return getOutputStream(touch(path));
}
diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileWriter.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileWriter.java
index fcd277635..3d3acccdd 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileWriter.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/FileWriter.java
@@ -22,17 +22,9 @@ import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.CharsetUtil;
-import java.io.BufferedOutputStream;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
+import java.io.*;
import java.nio.charset.Charset;
-import java.nio.file.Files;
+import java.nio.file.OpenOption;
import java.util.Map;
import java.util.Map.Entry;
@@ -216,13 +208,13 @@ public class FileWriter extends FileWrapper {
boolean isFirst = true;
for (final T t : list) {
if (null != t) {
- if(isFirst){
+ if (isFirst) {
isFirst = false;
- if(isAppend && FileUtil.isNotEmpty(this.file)){
+ if (isAppend && FileUtil.isNotEmpty(this.file)) {
// 追加模式下且文件非空,补充换行符
printNewLine(writer, lineSeparator);
}
- } else{
+ } else {
printNewLine(writer, lineSeparator);
}
writer.print(t);
@@ -338,17 +330,16 @@ public class FileWriter extends FileWrapper {
*
* @param in 输入流,不关闭
* @param isCloseIn 是否关闭输入流
+ * @param options 选项,如追加模式传{@link java.nio.file.StandardOpenOption#APPEND}
* @return file
* @throws IORuntimeException IO异常
* @since 5.5.2
*/
- public File writeFromStream(final InputStream in, final boolean isCloseIn) throws IORuntimeException {
+ public File writeFromStream(final InputStream in, final boolean isCloseIn, final OpenOption... options) throws IORuntimeException {
OutputStream out = null;
try {
- out = Files.newOutputStream(FileUtil.touch(file).toPath());
+ out = FileUtil.getOutputStream(file, options);
IoUtil.copy(in, out);
- } catch (final IOException e) {
- throw new IORuntimeException(e);
} finally {
IoUtil.closeQuietly(out);
if (isCloseIn) {
@@ -361,15 +352,12 @@ public class FileWriter extends FileWrapper {
/**
* 获得一个输出流对象
*
+ * @param options 选项,如追加模式传{@link java.nio.file.StandardOpenOption#APPEND}
* @return 输出流对象
* @throws IORuntimeException IO异常
*/
- public BufferedOutputStream getOutputStream() throws IORuntimeException {
- try {
- return new BufferedOutputStream(Files.newOutputStream(FileUtil.touch(file).toPath()));
- } catch (final IOException e) {
- throw new IORuntimeException(e);
- }
+ public BufferedOutputStream getOutputStream(final OpenOption... options) throws IORuntimeException {
+ return FileUtil.getOutputStream(file, options);
}
/**
diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/PathUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/PathUtil.java
index ffb97b45c..94ab00869 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/io/file/PathUtil.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/io/file/PathUtil.java
@@ -94,6 +94,7 @@ public class PathUtil {
}
// region ----- loop and walk
+
/**
* 递归遍历目录以及子目录中的所有文件
* 如果提供path为文件,直接返回过滤结果
@@ -232,6 +233,7 @@ public class PathUtil {
}
// region ----- copy
+
/**
* 拷贝资源到目标文件
*