首页 > 编程笔记 > Java笔记 阅读:7

Java BufferedReader和BufferedWriter类的用法(附带实例)

Java 中的 BufferedReader 类与 BufferedWriter 类分别继承 Reader 类与 Writer 类。这两个类都具有内部缓存机制,并能够以行为单位进行输入/输出。

根据 BufferedReader 类的特点,可以总结出如下图所示的带缓存的字符数据读取文件的过程。


图 1 BufferedReader类读取文件的过程

BufferedReader 类常用的方法如下:
BufferedWriter 类中的方法都返回 void。常用的方法如下:
在使用 BufferedWriter 类的 Write() 方法时,数据并没有立刻被写入输出流中,而是首先进入缓存区中。如果想立刻将缓存区中的数据写入输出流中,则一定要调用 flush() 方法。

【实例】使用缓冲流读写文本文件。使用 BufferedReader 类和 BufferedWriter 类,向 D 盘根目录下的 word.txt 文件中写入多行内容,然后将其读取出来输出到控制台上。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedDemo {
    public static void main(String args[]) {
        String content[] = {"好久不见", "最近好吗", "常联系"}; // 写入的内容
        File file = new File("D:\\word.txt"); // 创建文件对象
        try {
            FileWriter fw = new FileWriter(file); // 文件字符输出流
            BufferedWriter bw = new BufferedWriter(fw); // 换成输出流
            for (int k = 0; k < content.length; k++) { // 遍历要写入的内容
                bw.write(content[k]); // 写入字符串
                bw.newLine(); // 写入一个换行符
            }
            bw.close(); // 关闭缓冲输出流
            fw.close(); // 关闭文件字符输出流
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            FileReader fr = new FileReader(file); // 文件字符输入流
            BufferedReader br = new BufferedReader(fr); // 缓冲输入流
            String tmp = null; // 作为缓冲的临时字符串
            int i = 1; // 行数
            // 从文件中读出一行,如果读出的内容不为 null,则进入循环
            while ((tmp = br.readLine()) != null) {
                System.out.println("第" + i + "行:" + tmp); // 输出读取的内容
                i++; // 行数递增
            }
            br.close(); // 关闭缓冲输入流
            fr.close(); // 关闭文件字符输入流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
程序运行之后会向 D 盘根目录下的 word.txt 文件中写入 3 行文字,并且会在控制台输出如下信息:

第1行:好久不见
第2行:最近好吗
第3行:常联系

相关文章