java.io
包中的BufferedWriter
类可以与其他writer一起使用,更高效地写入(字符形式的)数据。
它继承自抽象类Writer
。
BufferedWriter的工作原理
BufferedWriter
维护一个8192个字符的内部缓冲区。
在写入操作期间,字符被写入内部缓冲区而不是磁盘。一旦缓冲区被填满或writer被关闭,缓冲区中的所有字符将被写入磁盘。
因此,与磁盘的通信次数减少了。这就是为什么使用BufferedWriter
写入字符更快的原因。
创建BufferedWriter
为了创建BufferedWriter
,我们必须首先导入java.io.BufferedWriter
包。导入包后,我们可以这样创建buffered writer。
// Creates a FileWriter
FileWriter file = new FileWriter(String name);
// Creates a BufferedWriter
BufferedWriter buffer = new BufferedWriter(file);
在上面的示例中,我们使用名为file的FileWriter
创建了一个名为buffer的BufferedWriter
。
在这里,BufferedWriter
的内部缓冲区具有默认大小8192个字符。但是,我们也可以指定内部缓冲区的大小。
// Creates a BufferedWriter with specified size internal buffer
BufferedWriter buffer = new BufferedWriter(file, int size);
该缓冲区将有助于更有效地将字符写入文件。
BufferedWriter的方法
BufferedWriter
类为Writer
中存在的方法提供了实现。
write() 方法
write()
- 将单个字符写入writer的内部缓冲区write(char[] array)
- 将指定 数组 中的字符写入写入器write(String data)
- 将指定的 字符串 写入写入器
示例:使用BufferedWriter将数据写入文件
import java.io.FileWriter;
import java.io.BufferedWriter;
public class Main {
public static void main(String args[]) {
String data = "This is the data in the output file";
try {
// Creates a FileWriter
FileWriter file = new FileWriter("output.txt");
// Creates a BufferedWriter
BufferedWriter output = new BufferedWriter(file);
// Writes the string to the file
output.write(data);
// Closes the writer
output.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
在上面的示例中,我们创建了一个名为output的buffered writer,并附带了一个FileWriter
。buffered writer与**output.txt**文件链接。
FileWriter file = new FileWriter("output.txt");
BufferedWriter output = new BufferedWriter(file);
为了写入数据到文件,我们使用了write()
方法。
当我们运行程序时,**output.txt**文件将被以下内容填充。
This is a line of text inside the file.
flush() 方法
要清除内部缓冲区,我们可以使用flush()
方法。此方法强制writer将缓冲区中的所有数据写入目标文件。
例如,假设我们有一个名为output.txt的空文件。
import java.io.FileWriter;
import java.io.BufferedWriter;
public class Main {
public static void main(String[] args) {
String data = "This is a demo of the flush method";
try {
// Creates a FileWriter
FileWriter file = new FileWriter(" flush.txt");
// Creates a BufferedWriter
BufferedWriter output = new BufferedWriter(file);
// Writes data to the file
output.write(data);
// Flushes data to the destination
output.flush();
System.out.println("Data is flushed to the file.");
output.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
输出
Data is flushed to the file.
当我们运行程序时,文件output.txt将被字符串data表示的文本填满。
close() 方法
要关闭buffered writer,我们可以使用close()
方法。调用close()
方法后,我们就不能再使用该writer写入数据了。
BufferedWriter的其他方法
方法 | 描述 |
---|---|
newLine() |
向writer插入一个新行 |
append() |
将指定的字符插入当前写入器 |
要了解更多信息,请访问Java BufferedWriter (官方Java文档)。