java-缓冲流简单介绍

关于缓冲流;
缓冲流是处理流的一种
缓冲流是作用于已有的流上使用的流,
缓冲流可以作用在以有的节点流上(比如作用在FileReader,FileWriter)
使用节点流的目的是为为了更高效率的操作文件

基本字符型缓冲流和字节型缓冲流;
BufferedInputStraem
BufferedOutputStraem
BufferReader
BufferWriter

字符型缓冲流的使用;

1,实例化一个File类指向相应的文件
(File file = new File(“填入文件路径”)😉

2,根据传入文件的类型将实例化的File作为参数传入到对应的节点流中
(用字符型节点流举例;FileReader flr = new FileReader(file)😉
(用字符型节点流举例;FileWriter flw = new FileWriter(file)😉

3,将对应的节点流当作参数传入到缓冲流中
(BufferderReader bfr = new Bufferder(flr)😉
(BufferderWriter bfw = new Bufferder(flw)😉

4,执行对应的读写操作;
bfr.read();
bfw.write();

5,关闭流(在上文所说的四个缓冲流中关闭了缓冲流之后他会对应的关闭自己作用上的流所以不需要手动关闭,有一些其他的缓冲流不会关闭自己作用的流需要手动关闭)
bfr.close();
bfw.close();

例子;

public class BufferedTest {
    public static void main(String[] args) {
        BufferedReader bfr = null;
        BufferedWriter bfw = null;
        try {
            File file = new File("doupo.txt");
            File file1 = new File("zsmc1.txt");
            FileReader flr = new FileReader(file);
            FileWriter flW = new FileWriter(file1);
            bfr = new BufferedReader(flr);
            bfw = new BufferedWriter(flW);

            char[] cubf = new char[10];
            int read = bfr.read(cubf);
            while (read != -1){
                bfw.write(cubf, 0 , read);
                read = bfr.read(cubf);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (bfr != null){
                try {
                    bfr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bfw != null){
                try {
                    bfw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

关于缓冲流提高效率的原因;
源码展示;

Creates a buffering character-input stream that uses a default-sized input buffer.
Params:
in – A Reader
 public BufferedReader(Reader in) {
        this(in, defaultCharBufferSize);defaultCharBufferSize = 8192
    }

原理上缓冲流创建了一个缓冲区,当数据进入时会先保存在缓冲区内,当达到了缓冲区的要求时在写到需要写入的文件以达到更高的效率
(BufferedWriter有一个flush();操作可以将当前缓冲区的数据写出并且刷新,因为write();方法中使用了flush();所以不用手动调用)

BufferedInputStraem和BufferedOutputStraem就不举例了其实和字符型一样就是文件不同罢了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值