java之Buffer字符输入和输出流介绍和代码精析

一:BufferedReader和BufferedWriter初始

  • 是用于处理字符流的两个重要类,它们分别用于从字符输入流中读取数据和向字符输出流中写入数据

  • 也是为了提高字符流读写的效率,引入了缓冲机制

  • 用包装设计模式(锦上添花),这两个类都提供了缓冲功能,使得读写操作更加高效

二:BufferedReader介绍

  • 用于从字符输入流中读取文本,并缓冲字符以便有效地读取。
  • 当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区
  • 而之后若使用read()方法,会先从缓冲区中进行读取,如果缓冲区数据不足,才会再从文件中读取
  • 提供了诸如read(), readLine(), 和 close() 等方法
  • 构造函数 BufferedReader(Reader in)
  • 常用方法:
    • int read(): 读取单个字符。
    • int read(char[] cbuf, int off, int len): 将字符读入数组的某一部分。
    • String readLine(): 读取一整行文本行,返回一整行字符串,如果读到行尾了就返回null, 返回的一行字符中不包含换行符
    • void close(): 关闭流并释放与之相关联的系统资源。

三:BufferedWriter

  • 用于将文本写入字符输出流,缓冲字符以便有效地写入。
  • 写入的数据并不会先输出到目的地,而是先存储至缓冲区中,如果缓冲区中的数据满了,才会一次对目的地进行写出
  • 提供了诸如write(), newLine(), 和 close() 等方法。
  • 构造函数 BufferedWriter(Writer out)
  • 常用方法:
    • void write(int c): 写入单个字符。
    • void write(char[] cbuf, int off, int len): 写入字符数组的一部分。
    • void write(String s, int off, int len): 写入字符串的一部分。
    • void newLine(): 写入一个换行符号。
    • void close(): 关闭流并释放与之相关联的系统资源。

四:代码精析

package chapter12;

import java.io.*;

public class BufferedReadDemo {
    public static void main(String[] args) {
        String dir = "/Users/mz/IdeaProjects/xdclass-count/src/chapter12/";
        String inputname = dir + "abc.txt";
        String outputname = dir + "output.txt";

        try (BufferedReader br = new BufferedReader(new FileReader(inputname));
             BufferedWriter bw = new BufferedWriter(new FileWriter(outputname))

        ) {
            String line;
            //逐行读取,并写入文件,readLine不会读取换行符号
            while ((line = br.readLine()) != null){
                bw.write(line);
                bw.newLine();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中的输入输出分别用于读取和写入数据。它们是Java IO库中的一部分,也是Java程序中处理文件和网络通信的重要组成部分。 Java中的输入输出都是抽象类,常用的子类有: - InputStream和OutputStream:用于读取和写入字节,常用于处理二进制文件。 - Reader和Writer:用于读取和写入字符,常用于处理文本文件。 Java中的输入输出都有缓冲区,可以通过缓冲区一次性读取或写入多个字节或字符,提高读写效率。常用的输入输出有: - FileInputStream和FileOutputStream:用于读取和写入文件,是InputStream和OutputStream的子类。 - BufferedReader和BufferedWriter:用于读取和写入文本文件,是Reader和Writer的子类,可以提高读写效率。 - DataInputStream和DataOutputStream:用于读取和写入基本数据类型,如int、double、boolean等。 下面是一个简单的示例,演示如何使用FileInputStream和FileOutputStream读取和写入文件: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileIOExample { public static void main(String[] args) { try { // 读取文件 FileInputStream in = new FileInputStream("input.txt"); byte[] buffer = new byte[1024]; int len = in.read(buffer); System.out.println(new String(buffer, 0, len)); in.close(); // 写入文件 FileOutputStream out = new FileOutputStream("output.txt"); out.write("Hello, world!".getBytes()); out.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在这个示例中,我们首先使用FileInputStream读取文件,然后使用FileOutputStream写入文件。当我们读取文件时,我们使用一个缓冲区来存储读取的字节,并使用read方法来读取文件中的数据。当我们写入文件时,我们使用write方法将字节数组写入文件中。最后,我们通过close方法关闭输入输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹意雅韵(马)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值