Java——IO流(二)-(2/7):缓冲流-字节缓冲流、BufferedReader(字符缓冲输入流)、BufferedWriter(字符缓冲输出流)

目录

字节缓冲流

体系

作用

构造器

实例演示

字符缓冲流

BufferedReader(字符缓冲输入流)

体系

构造器及方法(1)

实例演示(1)

BufferedWriter(字符缓冲输出流)

构造器及方法(2)

实例演示(2)


字节缓冲流

体系

作用

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

  • 原理:字节缓冲输入流自带了8KB缓冲池字节缓冲输出流也自带了8KB缓冲池

构造器

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

实例演示

需求:使用字节缓冲流复制文件

import java.io.*;

public class BufferedInputStreamTest1 {
    public static void main(String[] args) {
        try(
                InputStream is = new FileInputStream("HelloWorld/src/file.txt");
                //1、定义一个字节缓冲输入流包装原始的字节输入流
                InputStream bis = new BufferedInputStream(is,8192 * 2);  //可以更改大小

                OutputStream os = new FileOutputStream("HelloWorld/src/filecopy.txt");
                //2、定义一个字节缓冲输出流包装原始的字节输出流
                OutputStream bos = new BufferedOutputStream(os,8192 * 2);
                ){

            byte[] buffer = new byte[1024];
            int len;
            while( (len = is.read(buffer)) != -1 ){
                bos.write(buffer,0,len);
            }
            System.out.println("复制完成!!");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

字符缓冲流

BufferedReader(字符缓冲输入流)

  • 作用:自带8K(8192)的字符缓冲池,可以提高字符输入流读取字符数据的性能。

体系

构造器及方法(1)

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

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

方法说明
public String readLine()读取一行数据返回,如果没有数据可读了,会返回null

实例演示(1)

读取文件file.txt

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Reader;

public class BufferedReaderTest1 {
    public static void main(String[] args) {
        try(
                Reader fr = new FileReader("HelloWorld/src/file.txt");
                //创建一个字符缓冲输入流包装原始的字符输入流
                BufferedReader br = new BufferedReader(fr);
                ){
            String line;        //记住每次读取的一行数据
            while( (line = br.readLine()) != null ){
                System.out.println(line);
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

运行结果:

BufferedWriter(字符缓冲输出流)

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

原始的字符输出流也自带缓冲区,但是比较小。

构造器及方法(2)

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

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

方法说明
public void newLine()换行

实例演示(2)

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.Writer;

public class BufferedWriterTest1 {
    public static void main(String[] args) {
        try(
                Writer fw = new FileWriter("HelloWorld/src/file.txt");
                //创建一个字符缓冲输出流管道包装原始的字符输出流
                BufferedWriter bw = new BufferedWriter(fw);
                ){
            bw.write('a');
            bw.write(97);
            bw.write('始');
            bw.newLine();
            bw.write("题龙阳县青草湖");
            bw.newLine();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

运行后再查看file文件:


END


学习自:黑马程序员——Java课程

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值