栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【Java I/O 流】字符缓冲流:BuffreadReader 和 BufferedWriter

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java I/O 流】字符缓冲流:BuffreadReader 和 BufferedWriter

❤️ 个人主页:水滴技术
 支持水滴:点赞 + 收藏⭐ + 留言
 订阅专栏:Java 教程:从入门到精通

文章目录
  • BufferedReader(字符缓冲输入流)
    • 构造函数
      • BufferedReader(Reader in)
      • BufferedReader(Reader in, int sz)
    • 常用方法
      • int read()
      • int read(char cbuf[], int off, int len)
      • String readLine()
      • void close()
    • 读取案例
      • 案例一:使用字符缓冲输入流读取文本文件
  • BufferedWriter(字符缓冲输出流)
    • 构造函数
      • BufferedWriter(Writer out)
      • BufferedWriter(Writer out, int sz)
    • 常用方法
      • void write(int c)
      • void write(char cbuf[], int off, int len)
      • void write(String s, int off, int len)
      • void newLine()
      • void flush()
      • void close()
    • 写入案例
      • 案例一:使用字符缓冲输出流向文本文件写入内容
  • 系列文章
  • 精品专栏


大家好,我是水滴~~

缓冲流是一个包装流,在创建缓冲流实例时,需要传入底层真实操作的输入或输出流。其主要的作用就是为了提高读写效率而生的。

今天讲的字符缓冲流有两个:BuffreadReader (字符缓冲输入流)和 BufferedWriter(字符缓冲输出流)。本文会介绍它们的构造函数和一些常用方法,最后使用真实案例来学习字符缓冲流是如何使用的。

BufferedReader(字符缓冲输入流)

BufferedReader 是 Reader 的包装流,用于缓冲字符输入流,不必在每个字符读取时都要进行系统底层调用,提高了读取效率。当创建 BufferedReader 实例时,会创建一个内部缓冲区数组,用于暂时存储从流中读取的数据。而在读取缓冲流时,会从该数组中读取,读完后会重新填充,直到流中的数据被全部读完。

构造函数

字符缓冲输入流的构造函数需要传入一个字节输入流,该字符输入流为实际读取的流对象。

BufferedReader(Reader in)

使用字符输入流 Reader 创建一个字符缓冲区输入流 BufferedReader ,其缓冲区使用默认大小。

BufferedReader(Reader in, int sz)

使用字符输入流 Reader 和 指定的缓冲区大小,创建一个字符缓冲区输入流 BufferedReader 。

常用方法 int read()

从字符缓冲区输入流中读取一个字符,读取的字符以 int 型返回,如果读取至末尾,则返回值 -1。

int read(char cbuf[], int off, int len)

从字符缓冲区输入流中读取多个字符,并存入数组 cbuf 中,从缓冲区的 off 下标处开始存储,最多存入 len 个字符。返回值为读取的字符数,如果读取流的末尾,则返回 -1。

String readLine()

读取一行文字。一行由换行符“n”或回车符“r”表示。返回结果为这一行字符的文本内容。

void close()

关闭输入流,并释放与之相关的所有系统资源。

读取案例

这里只介绍如何使用缓冲区输入流来包装底层输入流,更多的读取操作与其他字符输入流一至,你可以参考前面的《【Java I/O 流】文件字符输入输出流:FileReader 和 FileWriter》,这里就不再赘述了。

案例一:使用字符缓冲输入流读取文本文件

首选创建一个文件字符输入流 FileReader ,用于读取文本文件。再创建一个字符缓冲输入流 BufferedReader,其底层字符输入流使用创建好的 FileReader 实例。
然后就可以使用该缓冲流进行读取文件中的内容了。
最后关闭流,这里只关闭缓冲流即可,同时它会关闭底层的字符输入流。

代码示例:

public static void read1() throws IOException {
    // 创建字符输入流 FileReader 实例
    FileReader fr = new FileReader("c:/io/13.txt");
    // 创建字符缓冲输入流 BufferedReader 实例,底层字符输入流使用 FileReader
    BufferedReader br = new BufferedReader(fr);

    // 读取一个字符
    System.out.println((char) br.read());
    // 读取一个字符
    System.out.println((char) br.read());
    // 读取一个字符
    System.out.println((char) br.read());
    // 读取一个字符
    System.out.println((char) br.read());

    // 关闭输入流,只关闭缓冲区输入流即可,会同时关闭底层输入流
    br.close();
}

输出内容:

水
滴
技
术
BufferedWriter(字符缓冲输出流)

BufferedWriter 是 Writer 的包装流,用于缓冲字符输出流,不必在每个字符写入时都要进行系统底层调用,提高了写入效率。当创建 BufferedWriter 实例时,会创建一个内部缓冲区数组,用于暂时存储从内存中写入的数据。缓冲区被填充满,会刷新缓冲区,进行真正的写入操作。

构造函数

字符缓冲输出流的构造函数需要传入一个字节输出流,该字符输出流为实际要写入的流对象。

BufferedWriter(Writer out)

使用字符输出流 Writer 实例创建一个字符缓冲区输出流 BufferedWriter 实例,其缓冲区使用默认大小。

BufferedWriter(Writer out, int sz)

使用字符输出流 Writer 实例和指定的缓冲区大小,创建一个字符缓冲区输出流 BufferedWriter 实例。

常用方法 void write(int c)

向字符缓冲区输出流写入一个字符。

void write(char cbuf[], int off, int len)

向字符缓冲区输出流中写入多个字符,从缓存区 b 的 off 下标处开始写入 len 个字符。

void write(String s, int off, int len)

向字符缓冲区输出流中写入字符串,从字符串的 off 下标开始,写入 len 个字符。

void newLine()

写入一个回车符。

void flush()

刷新该输出流,强制将缓存区中的字节写入底层输出流。

void close()

关闭该输出流,并释放与之相关的所有系统资源。

写入案例 案例一:使用字符缓冲输出流向文本文件写入内容

首先创建一个文件字符输出流 FileWriter 实例,用于向文件写入内容。再创建一个字符缓冲输出流 BufferedWriter 实例。其底层字符输出流使用创建好的 FileWriter 实例。
然后就可以使用该缓冲流向文本文件写入内容了。
最后关闭流,这里只关闭缓冲流即可,同时它会关闭底层的字符输出流。

代码示例:

public static void write1() throws IOException {
    // 创建字符输出流 FileWriter 实例
    FileWriter fw = new FileWriter("c:/io/14.txt");
    // 创建字符缓冲输出流 BufferedWriter 实例,底层字符输出流使用 FileWriter
    BufferedWriter bw = new BufferedWriter(fw);

    // 写入字符串
    bw.write("水");
    // 写入字符串
    bw.write("滴");
    // 写入字符串
    bw.write("技术");

    // 关闭输出流,只关闭缓冲区输出流即可,会同时关闭底层输出流
    bw.close();
}

该操作会创建一个 c:/io/14.txt 文件,写入内容:水滴技术


系列文章

 【Java I/O 流】文件的操作——java.io.File 类详解

 【Java I/O 流】I/O 流的原理与流的分类

 【Java I/O 流】字节输入输出流:InputStream & OutputStream

 【Java I/O 流】文件字节输入输出流:FileInputStream & FileOutputStream(文件读写案例)

 【Java I/O 流】字符输入输出流:Reader 和 Writer

 【Java I/O 流】文件字符输入输出流:FileReader 和 FileWriter

 【Java I/O 流】字节缓冲流:BufferedInputStream 和 BufferedOutputStream

精品专栏

 《IDEA 教程:从入门到精通》

 《 Java 教程:从入门到精通》

 《MySQL 教程:从入门到精通》

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号