• 【Java-----IO流(三)之缓冲流详解】


    缓冲流概述

    缓冲流也称为高效流,或者高级流,字节流可以称为原始流。缓冲流自带缓冲区,可以提高原始字节流和字符流读写数据的性能。缓冲流的原理就是,创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区进行读写,减少系统的IO次数,提高读写效率。

    缓冲流分类

    缓冲流可以分为字节缓冲流和字符缓冲流

    字节缓冲流

    • 字节缓冲输入流:BufferedInputStream
    • 字节缓冲输出流:BufferedOutputStream

    字符缓冲流

    • 字符缓冲输入流:BufferedReader
    • 字符缓冲输出流:BufferedWriter

    字节缓冲流的使用

    构造方法

    public BufferedInputStream(InputStream in):创建一个新的缓冲输入流,可以把低级的字节输入流包装成一个高级的缓冲字节输入流管道,从而提高字节输入流读数据的性能

    1. File file=new File("D:\\aaa\\helloworld.txt");
    2. FileInputStream fis=new FileInputStream(file);
    3. BufferedInputStream bis=new BufferedInputStream(fis);

    public BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,可以把低级的字节输出流包装成一个高级的缓冲字节输出流管道,从而提高字节输出流写数据的性能

    1. File file=new File("D:\\aaa\\helloworld.txt");
    2. FileOutputStream fos=new FileOutputStream(file);
    3. BufferedOutputStream bos=new BufferedIOutputStream(fos);

    字节缓冲流的使用

    1. File file=new File("D:\\aaa\\helloworld.txt");
    2. FileInputStream fis=new FileInputStream(file);
    3. FileOutputStream fos=new FileOutputStream(file);
    4. BufferedInputStream bis=new BufferedInputStream(fis);
    5. BufferedOutputStream bos=new BufferedOutputStream(fos);
    6. byte[] b=new byte[1024];
    7. int len;
    8. while((len=bis.read(b))!=-1) {
    9. bos.write(b,0,len);
    10. }
    11. System.out.println("复制完成了");

    字符缓冲流的使用

    构造方法

    public BufferedReader(Reader r):创建一个新的缓冲输入流,可以把低级的字符输入流包装成一个高级的缓冲字符输入流管道,从而提高字符输入流读数据的性能

    1. File file=new File("D:\\aaa\\helloworld.txt");
    2. FileReader fr=new FileReader(file);
    3. BufferedReader br=new BufferedReader(fr);

    public BufferedWriter(Writer w):创建一个新的缓冲输出流,可以把低级的字符输出流包装成一个高级的缓冲字符输出流管道,从而提高字符输出流写数据的性能

    1. File file=new File("D:\\aaa\\helloworld.txt");
    2. FileWriter fw=new FileWriter(file);
    3. BufferedWriter bw=new BufferedWriter(fw);

    字符缓冲流新增功能

    public String readLine():读取一行数据返回,如果读取没有完毕,无行可读返回null

    1. File file=new File("D:\\aaa\\helloworld.txt");
    2. BufferedReader br=new BufferedReader(fr);
    3. String line;
    4. while((line=br.readLine())!=null) {
    5. System.out.println(line);
    6. }

    public void newLine():换行操作

    1. File file=new File("D:\\aaa\\helloworld.txt");
    2. FileWriter fw=new FileWriter(file);
    3. BufferedWriter bw=new BufferedWriter(fw);
    4. bw.write("我是中国人");
    5. bw.newLine();
    6. bw.write("中国人不骗中国人");

  • 相关阅读:
    认识一下 ClickHouse
    8-flask django执行原生sql和sqlalchemy执行原生sql、flask-sqlalchemy使用(filter_by和filter)、flask-migrate使用
    IT基础设施管理
    python写好的程序打包成exe可执行文件
    java基础 System类、BigInteger 和 BigDecimal类、时间类
    情态动词习题
    Linux Shell脚本自动化编程实战【1.4 shell特性 Login Nologin】
    软考__第17章 战略管理
    MySQL(17):触发器
    [JavaScript]_[中级]_[动态创建表单并提交到新页面_实现后台内容预览]
  • 原文地址:https://blog.csdn.net/qq_45071131/article/details/127639621