java缓冲流BufferWriter的原理跟提高效率原因

2024-11-02 02:31:40
推荐回答(2个)
回答1:

不带缓冲的流的工作原理:它读取到一个字节/字符,就向用户指定的路径写出去 读一个写一个 所以就慢了
带缓冲的流的工作原理:读取到一个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从而提高了工作效率

举个现实生活中的例子:假设你是一个快递员,不带缓冲的流就像快递公司给你一份快递你就跑一次,而带缓冲的流就像快递公司给你一份快递,你先不去,等攒攒多一起送,试想一下,是不是效率提高了?

回答2:

使用BufferedWriter写入文本时不用将文本转换成字节数组,直接整行整行的写入,大大提供了写入效率。
在下面的示例代码中向文件中写入两行文本。
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

/**
*
* @author gdb
*/
public class Main {

/**
* Prints some data to a file using a BufferedWriter
*/
public void writeToFile(String filename) {

BufferedWriter bufferedWriter = null;

try {

//Construct the BufferedWriter object
bufferedWriter = new BufferedWriter(new FileWriter(filename));

//Start writing to the output stream
bufferedWriter.write("Writing line one to file");
bufferedWriter.newLine();
bufferedWriter.write("Writing line two to file");

} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
//Close the BufferedWriter
try {
if (bufferedWriter != null) {
bufferedWriter.flush();
bufferedWriter.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Main().writeToFile("myFile.txt");
}
}
执行上述代码后文件中的文本如下:
Writing line one to file
Writing line two to file
注意使用BufferedWriter一定要在finally中flush()并close().