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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java缓冲流BufferWriter的原理跟提高效率原因相关的知识,希望对你有一定的参考价值。

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

举个现实生活中的例子:假设你是一个快递员,不带缓冲的流就像快递公司给你一份快递你就跑一次,而带缓冲的流就像快递公司给你一份快递,你先不去,等攒攒多一起送,试想一下,是不是效率提高了?
参考技术A 使用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().

以上是关于java缓冲流BufferWriter的原理跟提高效率原因的主要内容,如果未能解决你的问题,请参考以下文章

Buffer Stream- BufferReader & BufferWriter

java 缓冲流+原理图解

J06-Java IO流总结六 《 BufferedReader和BufferedWriter 》

Java基础教程——缓冲流

Java之缓冲流(字节/字符缓冲流)

java 缓冲流