Java 字符缓冲流

96 阅读1分钟

字符缓冲流

Snipaste_2022-12-13_19-50-17.png

  • 原理:底层自带了长度为8192字符数组(16kb的缓冲区提高性能
  • 原来的基本字符流就自带缓冲区,所以字符缓冲流提升的性能并不是分很明显,对于字符缓冲流而言关键点是两个特有方法

构造方法

方法名称说明
public BufferedReader(Reader r)把基本流变成高级流
public BufferedWriter(Writer r)把基本流变成高级流
  • 续写开关要写到基本流中,因为真正在工作的是基本流
  • 底层代码
private static int defaultCharBufferSize = 8192; 

public BufferedReader(Reader in) {
    this(in, defaultCharBufferSize)
}
public BufferedReader(Reader in, int sz) {
    super(in);
    if (sz <= 0 )
        thorw new IllegalArgumentException("Buffer size <= 0");
    this.in = in;
    cb = new char[sz];
    nextChar = nChars = 0;

特有方法

字符缓冲输入流特有方法说明
public String readLine()读取一行数据,如果没有数据可读了,会返回null
  • readLine方法在读取的时候,一次读一行,遇到回车换行结束,但是并不会把回车换行读到内存中
字符缓冲输出流特有方法说明
public void newLine()跨平台的换行

使用

  • 拷贝文件
BUfferedRead br = new BufferedReader(new FileReader());
BUfferedWriter bw = new BufferedWriter(new FileWriter());

String s;
while((s = br.redLine()) != null) {
    bw.write(s);
    bw.newLine(s);
}

bw.close();
br.close();