Java BufferedWriter
Java BufferedWriter类是java.io包的一部分。
Java BufferedWriter
BufferedWriter是java.io.Writer类的子类。
BufferedWriter将文本写入字符输出流,缓冲字符,以便有效地写入单个字符,数组和字符串。
可以指定缓冲区大小,也可以使用默认大小。
对于大多数用途,默认值足够大。BufferedWriter用于使诸如FileWriter之类的低级类更高效且更易于使用。
与FileWriters相比,BufferedWriters一次将相对较大的数据块写入文件,从而最大程度地减少了执行缓慢的文件写入操作的次数。BufferedWriter类还提供了一个newLine()方法来自动创建特定于平台的行分隔符。
通常,Writer立即将其输出发送到基础字符或者字节流。
除非需要即时输出,否则建议将BufferedWriter包装在其write()操作可能会很昂贵的所有Writer周围,例如FileWriters和OutputStreamWriters。
Java BufferedWriter使用流程
Java BufferedWriter构造函数
BufferedWriter(Writer out)
:创建一个缓冲的字符输出流,该流使用默认大小的输出缓冲区和指定的Writer对象。BufferedWriter(Writer out,int sz)
:创建一个缓冲的字符输出流,该流使用具有指定Writer对象的指定大小的输出缓冲区。
BufferedWriter方法和示例
让我们看一下下面的BufferedWriter类方法的示例。
- write(int c):此方法写入由int c指定的单个字符。
上面程序的输出如下:
如果您注意到程序和输出文件的图像,则可能会看到writer.write(50);
在文件中输出为" 2",这是因为整数参数被转换为char然后写入了文件。
下面的代码片段输出将清除您的困惑。
BufferedWriter实现了AutoCloseable接口,因此我们在使用BufferedWriter类时可以尝试使用资源。
让我们看下面的示例程序。
write(String s,int off,int len)
:此方法将String s的一部分从int off写入int len.s:要写入的字符串off:开始读取字符的偏移量len:要写入的字符数len参数的值为负,则不写入任何字符。write(char [] cbuf,int off,int len)
:该方法将char [] cbuf指定的字符数组的一部分从int off写入int len.cbuf:一个字符arrayoff:从其开始的偏移量读取characterlen:要写入的字符数此方法将给定数组中的字符存储到此流的缓冲区中,并根据需要将缓冲区刷新到基础流。
但是,如果请求的长度至少等于缓冲区的长度,则此方法将刷新缓冲区并将字符直接写入基础流。
因此,冗余的BufferedWriters不会不必要地复制数据。newLine()
:此方法编写一个行分隔符。
行分隔符字符串是由系统属性" line.separator"定义的,不一定是单个换行符(\ n)。flush()
:此方法刷新流并将缓冲区写入输出文件。close()
:此方法在关闭流之前先冲洗流。
一旦关闭流,调用write()或者flush()方法将导致引发IOException。
关闭先前关闭的流无效。