目录
一、字节缓冲流
二、字符缓冲流
字符缓冲输入流( BufferedReader )
字符缓冲输出流( BufferedWriter )
缓冲流作用:对原始流进行包装,以提高原始流读写数据的性能
一、字节缓冲流
1. 作用:提高字节流读写数据的性能
2. 原理:字节缓冲输入流自带了8KB(8 * 1024 字节)的缓冲池;字节缓冲输出流也自带了8KB的缓冲池
3. 构造器
BufferedInputStream( InputStream is) 把低级的字节输入流包装成一个高级的缓冲字节输入流,提高读取数据的性能;
BufferedOutputStream( OutputStream os ): 把低级的字节输出流包装成一个高级的缓冲字节输出流,提高读取数据的性能
public static void main(String[] args) {try (InputStream is = new FileInputStream("要复制的文件");InputStream bis = new BufferedInputStream(is); //后面也可以加 8192 * 2 但不是越大越好OutputStream os = new FileOutputStream("目标位置");OutputStream bos = new BufferedOutputStream(os); //后面也可以加 8192 * 2 但不是越大越好){byte[] buffer = new byte[1024];int len;while ((len = bis.read(buffer)) != -1) {bos.write(buffer,0,len);}System.out.println("复制完成!");} catch (Exception e) {e.printStackTrace();}}
二、字符缓冲流
-
字符缓冲输入流( BufferedReader )
1. 作用:自带8K(8192)的字符缓冲池,可以提高字符输入流读取字符数据的性能
2. String readLine() :读取一行,如果读取不到就返回null
public static void main(String[] args) {try (Reader fr = new FileReader("文件路径");BufferedReader br = new BufferedReader(fr);){//第一种方式char[] buffer = new char[3];int len;while ((len = fr.read(buffer)) != -1) {System.out.print(new String(buffer,0,len));}//第二种方式//按照行读取的方式String line;while ((line = br.readLine()) != null) {System.out.println(line);}} catch (Exception e) {e.printStackTrace();}}
-
字符缓冲输出流( BufferedWriter )
1. 作用:自带一个8k的字符缓冲池,可以提高字符输出流写字符数据的性能
2. 新增功能:void newLine() 换行
public static void main(String[] args) {try (Writer fw = new FileWriter("文件路径",true);//不用多态,因为多态时不可以使用newLine()BufferedWriter bw = new BufferedWriter(fw);){bw.write(97);bw.write('a');bw.write("我爱中国!");bw.newLine();//换行} catch (Exception e) {e.printStackTrace();}
}