java中的缓冲流

  • Java.io.BufferedOutputStream 字节缓冲输出流,继承自OutputStream

  • 构造方法:

  1. BufferedOutputStream (OutputStream out) 创建一个新的缓冲输出流,将数据写入指定的底层输出流
  2. BufferedOutputStream (OutputStream out, int size) 创建一个新的大小为size的缓冲输出流,将数据写入指定的底层输出流
  3. 我们可以传递OutputStream的子类FileOutputStream,缓冲流会给FileOutputStream增加一个缓冲区,提高写入效率,我们可以自定义size来设置缓冲区的大小
  • 使用步骤
  1. 创建FileOutputStream对象,构造方法中写出文件地址
  2. 创建BufferedOutputStream对象,构造方法中提供FileOutputStream对象来增加一个缓冲区,提高写入效率
  3. 使用BufferedOutputStream对象的write方法将数据写入内部缓冲区
  4. 使用flush或者close方法将数据刷入文件,如果使用了close,则flush可以省略,因为close会自动flush
java 复制代码
    private static void test1() throws IOException {
        FileOutputStream fos=new FileOutputStream("c.txt");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        bos.write("你好啊".getBytes());
        bos.close();
        fos.close();
    }
  • Java.io.BufferedInputStream 字节缓冲输入流 ,继承自InputStream

  • 构造方法

  1. BufferedInputStream (InputStream in) 创建一个新的缓冲输入流
  2. BufferedInputStream (InputStream in, int size) 创建一个新的大小为size的缓冲输入流
  • 使用步骤
  1. 创建FileInputStream对象,绑定数据源

  2. 创建BufferedInputStream对象,传递FileInputStream对象作为参数,提高FileInputStream读取文件的效率

  3. 使用BufferedInputStream对象的read方法读取文件

  4. 释放资源

    java 复制代码
        private static void test2() throws IOException {
            FileInputStream fis=new FileInputStream("c.txt");
            BufferedInputStream bis=new BufferedInputStream(fis);
            int len=0;
            byte[] bytes=new byte[1024];
            while((len=bis.read(bytes))!=-1)
            {
                System.out.println(new String(bytes,0,len));
            }
        }
  • BufferedWriter 字符缓冲输出流

  • 构造方法

  1. BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的字符缓冲输出流
  2. BufferedWriter(BufferedWriter out,int sz) 创建一个使用指定大小输出缓冲区的字符缓冲输出流
  • 特有的成员方法
  1. void newLine() 换行,会根据不同的操作系统使用不同的换行符
  • 使用步骤
  1. 创建字符缓冲输出流对象,在构造方法中传递字符输出流

  2. 调用字符缓冲输出流中的write,把数据写入到内存缓冲区中

  3. 调用字符缓冲输出流中的flush,把内存缓冲区中的数据刷入文件(可以不使用flush,直接使用close)

  4. 释放资源

    java 复制代码
        private static void test3() throws IOException {
            BufferedWriter bw=new BufferedWriter(new FileWriter("d.txt"));
            bw.write("你好啊,hello");
            bw.newLine();
            bw.write("yes");
            bw.close();
        }
  • BufferedReader 字符缓冲输入流

  • 构造方法

  1. BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的字符缓冲输入流
  2. BufferedReader(Reader in,int sz) 创建一个使用指定大小输入缓冲区的字符缓冲输入流
  • 特有的成员方法
  1. String readLine() 读取一个文本行,读取一行数据
  2. 返回值是字符串,当读到行终止符号的时候返回该行的字符串,当没有读到行终止符,说明读到流的末尾,返回null
  • 使用步骤
  1. 创建字符缓冲输入流对象,构造方法中传递字符输入流

  2. 使用字符缓冲输入流中的read/readLine方法读取文本

  3. 释放资源

    java 复制代码
        private static void test4() throws IOException{
            BufferedReader br=new BufferedReader(new FileReader("d.txt"));
            String s="";
            while((s=br.readLine())!=null)
            {
                System.out.println(s);
            }
            br.close();
        }
相关推荐
特立独行的猫A4 分钟前
Ionic + 仓颉语言的 cj-tauri 开发框架实战:开发精美移动端 APP
java·后端·python
Pniubi8 分钟前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
nice_lcj52016 分钟前
LRU 缓存入门:它是什么、怎么用、面试怎么手写
java·数据结构·缓存·面试·lru
普通人630 分钟前
WebGL与WebGPU入门指南
开发语言·webgl·1024程序员节
꧁细听勿语情꧂1 小时前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法
SomeOtherTime1 小时前
Rust集合(AI回答)
开发语言·后端·rust
文丑颜不良啊1 小时前
LeetCode2741~2760题目解析
java·leetcode
曦樂~1 小时前
【Web Development】03JavaScript 基础和事件
开发语言·前端·javascript
郝学胜-神的一滴1 小时前
LangChain Skill 实现(渐进披露 On-Demand Skill,LangChain 官方 Deep Agent Skill 模式)
开发语言·python·langchain·numpy
俊俊几年的1 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c