缓冲流,BufferReader,BufferWriter,案例

IO流的体系

 字节缓冲流的作用

提高字节流读取数据的性能

*原理:字节缓冲输入流自带了8Kb的缓冲池,字节缓冲输出流也自带了8kb的缓冲池

构造器 说明
public BufferedInputStream(InputStream is) 把低级的字节输入流包装成一个高级的缓冲字节输入流,从而提高读数据的性能
public BufferedOutputStream(OutputStream os)  把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能
import java.io.*;

public class BufferedInputStream1 {
    public static void main(String[] args) {
            //使用字节流完成对文件的复制操作
                //需求:复制照片
                //创建一个文件字节输入流管道和源文件接通
                try (InputStream is = new FileInputStream("G:\\heima1\\新建文件夹");
                     //定义一个字节缓冲输入流来包装原始的字节输入流
                     InputStream bis=new BufferedInputStream(is);

                     OutputStream os = new FileOutputStream("F:\\My Java\\图片\\新建文件夹");
                     //定义一个字节缓冲输出流来包装原始的字节输出流
                    OutputStream bos= new BufferedOutputStream(os);
                ){
                    //创建一个字节数组,负责转移字节数据
                    byte[]bytes=new byte[1024];
                    //从字节输入流中读取字节数据,再写到字节输出流中去,读多少写出去多少
                    int len;//记住每次读取了多少个字节
                    while ((len=bis.read(bytes))!=-1){
                        bos.write(bytes,0,len);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }

                System.out.println("复制完成");
            }
    }

BufferedReader(字符缓冲输出流)

构造器 说明
public BufferedReader(Reader r) 把低等字符输入流包装成字符输入流管道,从而提高字符输入流读字符数据的性能

字符缓冲输入流新增的功能:按照行读取字符

方法 说明
public String readLine() 读取一行数据返回,如果没有数据返回了,会返回null
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Reader;

public class BufferedReader1 {
    public static void main(String[] args) {
                //1、创建一个文件字符输入流,每次读取一个字符
                try (Reader rd= new FileReader("D:\\code\\weilai1\\src\\itheima1.txt");
                ){
                    BufferedReader br=new BufferedReader(rd);
                   // char []chars=new char[3];
                   // int len;
                    //while((len= br.read(chars))!=-1){
                     //   String str=new String(chars);
                    //    System.out.print(str);

                   // }
                    String line;//记住每次读取的一行数据
                    while((line=br.readLine())!=null){
                        System.out.println(line);
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
    }
}

BufferedWriter(字符缓冲输出流) 
作用:自带8K的字符缓冲池,可以提高字符输出流写字符数据的性能。

构造器 说明
public BufferedWiriter(Writer r) 把低级的字符输出流包装成一个高级的缓冲字符输出流管道,从而提高字符输出流写数据的性能

字符缓冲输出流新增的功能:换行

方法 说明
public void newLine()  换行
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriter1 {
    public static void main(String[] args) {
        try (FileWriter fw=new FileWriter("D:\\code\\weilai1\\src\\itheima1.txt",true);){
            BufferedWriter bw=new BufferedWriter(fw);
            // void write(int c)
            bw.write('b');
            bw.write('类');
            bw.write(97);
            bw.newLine();//换行
            //void write(String str)
            bw.write("你好,中国");
            bw.newLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上一篇:PHP 反序列化


下一篇:karpathy Let‘s build GPT