java.io
包的BufferedWriter
类可以与其他writer一起使用,以更有效地写入数据(以字符)。
它扩展了抽象类Writer
。
BufferedWriter的工作
BufferedWriter
维护内部缓冲区8192个字符 。
在写操作期间, 字符被写入内部缓冲区而不是磁盘。一旦缓冲区被填充或写入器被关闭,缓冲区中的所有字符将被写入磁盘。
因此,减少了与磁盘的通信次数。这就是为什么使用BufferedWriter
写字符更快的原因。
创建一个BufferedWriter
为了创建BufferedWriter
,我们必须首先导入java.io.BufferedWriter
包。导入包后,就可以创建缓冲的编写器了。
// Creates a FileWriter
FileWriter file = new FileWriter(String name);
// Creates a BufferedWriter
BufferedWriter buffer = new BufferedWriter(file);
在上面的示例中,我们创建了一个名为buffer的BufferedWriter
和名为file的FileWriter
。
此处, 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)
-将指定数组中的字符写入writer -
write(String data)
-将指定的字符串写入writer
示例:将数据写入文件的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的缓冲FileWriter
以及FileWriter
。缓冲的编写器与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()
方法。此方法强制编写器将缓冲区中存在的所有数据写入目标文件。
例如,假设我们有一个名为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()方法
要关闭缓冲的编写器,我们可以使用close()
方法。一旦调用close()
方法,就无法使用writer写入数据。
BufferedWriter的其他方法
Method | Description |
---|---|
newLine() |
inserts a new line to the writer |
append() |
inserts the specified character to the current writer |
要了解更多信息,请访问Java BufferedWriter(Java官方文档)。