文件写入 - FileWriter
# 文件写入 - FileWriter
简介
FileWriter
是 Hutool 提供的一个方便的文件写入工具类,简化了文件内容的写入操作。它支持多种写入模式,如追加模式和覆盖模式,并且提供了将文件内容写入字节流或字符流的能力。FileWriter
提供的功能与 FileReader
类似,使得读写文件的操作更加直观和便捷。
# 1. 写入文件内容
FileWriter
提供了多种方法来写入文件内容,支持覆盖模式和追加模式。
# 1.1 覆盖模式写入文件内容
write
方法用于将内容写入文件,默认是覆盖模式,即每次写入时都会覆盖文件中已有的内容。
import cn.hutool.core.io.file.FileWriter;
public class FileWriterExample {
public static void main(String[] args) {
// 创建一个 FileWriter 对象,指定写入文件的路径
FileWriter writer = new FileWriter("d:/test.properties");
// 写入字符串到文件中,覆盖模式
writer.write("test");
// 输出完成提示
System.out.println("内容已写入文件(覆盖模式)。");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
FileWriter(String filePath)
:创建一个FileWriter
对象,指定文件路径。filePath
:要写入的文件路径。
write(String content)
:将字符串内容写入文件,默认覆盖文件中已有内容。content
:要写入文件的字符串内容。
作用: 用于将内容写入到指定文件中,每次写入都会覆盖已有内容。
实际开发场景: 在需要生成配置文件或清除旧内容并写入新内容的场景下,使用覆盖模式写入文件。
# 1.2 追加模式写入文件内容
append
方法用于在文件末尾追加内容,不会覆盖文件中已有的内容。
import cn.hutool.core.io.file.FileWriter;
public class FileWriterExample {
public static void main(String[] args) {
// 创建一个 FileWriter 对象,指定写入文件的路径
FileWriter writer = new FileWriter("d:/test.properties");
// 追加字符串到文件末尾
writer.append("test");
// 输出完成提示
System.out.println("内容已追加到文件。");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
append(String content)
:将字符串内容追加到文件末尾,不覆盖已有内容。content
:要追加写入文件的字符串内容。
作用: 用于在文件末尾追加内容,不影响文件中已有内容。
实际开发场景: 在日志记录、追加数据到文件末尾等场景下,使用追加模式写入文件。
# 2. 获取输出流或 Writer
对象
除了直接写入文件内容,FileWriter
还提供了获取文件输出流、字符流 Writer
以及 PrintWriter
对象的能力,以支持更复杂的文件写入操作。
# 2.1 获取文件输出流
getOutputStream
方法用于获取文件的 OutputStream
对象,适合需要直接操作字节流的场景。
import cn.hutool.core.io.file.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
public class FileWriterExample {
public static void main(String[] args) {
// 创建一个 FileWriter 对象
FileWriter writer = new FileWriter("d:/test.txt");
// 获取文件的 OutputStream 对象
try (OutputStream outputStream = writer.getOutputStream()) {
String content = "This is a test.";
outputStream.write(content.getBytes());
outputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
// 输出完成提示
System.out.println("内容已写入文件(使用 OutputStream)。");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
getOutputStream()
:获取文件的OutputStream
对象。- 返回值:
OutputStream
对象,用于写入文件内容。
作用: 用于获取文件的输出流,适合需要直接操作字节流的场景。
实际开发场景: 在处理大文件、二进制数据或将文件内容传输到网络时,可以使用
getOutputStream
方法获取OutputStream
对象。- 返回值:
# 2.2 获取文件的 Writer
对象
getWriter
方法用于获取文件的 Writer
对象,适合需要操作字符流的场景。
import cn.hutool.core.io.file.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class FileWriterExample {
public static void main(String[] args) {
// 创建一个 FileWriter 对象
FileWriter writer = new FileWriter("d:/test.txt");
// 获取文件的 Writer 对象
try (Writer charWriter = writer.getWriter()) {
charWriter.write("This is a test.");
charWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
// 输出完成提示
System.out.println("内容已写入文件(使用 Writer)。");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
getWriter()
:获取文件的Writer
对象。- 返回值:
Writer
对象,用于写入文件内容。
作用: 用于获取文件的字符流
Writer
对象,适合需要操作字符流的场景。实际开发场景: 当需要写入文本内容或逐字符处理文件内容时,可以使用
getWriter
方法获取Writer
对象。- 返回值:
# 2.3 获取文件的 PrintWriter
对象
getPrintWriter
方法用于获取文件的 PrintWriter
对象,适合需要进行格式化输出的场景。
import cn.hutool.core.io.file.FileWriter;
import java.io.PrintWriter;
public class FileWriterExample {
public static void main(String[] args) {
// 创建一个 FileWriter 对象
FileWriter writer = new FileWriter("d:/test.txt");
// 获取文件的 PrintWriter 对象
try (PrintWriter printWriter = writer.getPrintWriter()) {
printWriter.println("This is a test.");
printWriter.printf("Current time: %s\n", System.currentTimeMillis());
}
// 输出完成提示
System.out.println("内容已写入文件(使用 PrintWriter)。");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
getPrintWriter()
:获取文件的PrintWriter
对象。- 返回值:
PrintWriter
对象,用于格式化输出内容到文件。
作用: 用于获取文件的
PrintWriter
对象,适合需要进行格式化输出的场景。实际开发场景: 当需要将格式化内容(如日志、报告)输出到文件时,可以使用
getPrintWriter
方法获取PrintWriter
对象。- 返回值: