跳到主要内容

Java BufferedReader

提示

1.BufferedReader 概念:Java 中的 BufferedReader 类用于更高效地读取字符数据,它通过在 java.io 包中与其他阅读器一起使用,维护一个内部缓冲区来提高读取效率。 2.创建和使用 BufferedReader:使用 BufferedReader 首先需要创建 FileReader,然后基于它创建 BufferedReader 对象。支持读取单个字符、字符数组,以及跳过和标记数据的功能。 3.BufferedReader 的工作原理:内部维护一个大小为 8192 个字符的缓冲区,通过从磁盘一次性读取大量字符到缓冲区,然后逐个读取,减少与磁盘的通信次数,从而提高读取速度。

java.io 包中的 BufferedReader 类可与其他阅读器一起使用,以更高效地读取数据(字符形式)。

它扩展了抽象类 Reader

Java 中的 BufferedReader 类扩展了 Reader 类

BufferedReader 的工作原理

BufferedReader 维护着一个内部 缓冲区,大小为 8192 个字符

BufferedReader 的读取操作中,会从磁盘读取一块字符并存储在内部缓冲区中。然后从内部缓冲区逐个读取字符。

因此,与磁盘的通信次数减少了。这就是为什么使用 BufferedReader 读取字符会更快。

创建 BufferedReader

为了创建一个 BufferedReader,我们首先必须导入 java.io.BuferedReader 包。一旦我们导入了包,就可以按照下面的方法创建阅读器。

// 创建一个 FileReader
FileReader file = new FileReader(String file);

// 创建一个 BufferedReader
BufferedReader buffer = new BufferedReader(file);

在上面的示例中,我们用名为 fileFileReader 创建了一个名为 bufferBufferedReader

这里,BufferedReader 的内部缓冲区默认大小为 8192 个字符。然而,我们也可以指定内部缓冲区的大小。

// 创建一个具有指定大小内部缓冲区的 BufferdReader
BufferedReader buffer = new BufferedReader(file, int size);

这个缓冲区将帮助更快地从文件中读取字符。

BufferedReader 的方法

BufferedReader 类为 Reader 中的不同方法提供了实现。

read() 方法

  • read() - 从阅读器的内部缓冲区读取单个字符
  • read(char[] array) - 从阅读器读取字符并存储在指定数组中
  • read(char[] array, int start, int length) - 从阅读器读取等于 length 的字符数,并从 start 位置开始存储在指定数组中

例如,假设我们有一个名为 input.txt 的文件,其中包含以下内容。

This is a line of text inside the file.

让我们尝试使用 BufferedReader 读取该文件。

import java.io.FileReader;
import java.io.BufferedReader;

class Main {
public static void main(String[] args) {

// 创建一个字符数组
char[] array = new char[100];

try {
// 创建一个 FileReader
FileReader file = new FileReader("input.txt");

// 创建一个 BufferedReader
BufferedReader input = new BufferedReader(file);

// 读取字符
input.read(array);
System.out.println("文件中的数据:");
System.out.println(array);

// 关闭阅读器
input.close();
}

catch(Exception e) {
e.getStackTrace();
}
}
}

输出

文件中的数据:
This is a line of text inside the file.

在上述示例中,我们创建了一个名为 input 的缓冲阅读器。这个缓冲阅读器与 input.txt 文件关联。

FileReader file = new FileReader("input.txt");
BufferedReader input = new BufferedReader(file);

在这里,我们使用了 read() 方法从缓冲阅读器的内部缓冲区读取字符数组。

skip() 方法

要舍弃并跳过指定数量的字符,我们可以使用 skip() 方法。例如,

import java.io.FileReader;
import java.io.BufferedReader;

public class Main {

public static void main(String args[]) {

// 创建一个字符数组
char[] array = new char[100];

try {
// 假设,input.txt 文件包含以下文本
// This is a line of text inside the file.
FileReader file = new FileReader("input.txt");

// 创建一个 BufferedReader
BufferedReader input = new BufferedReader(file);

// 跳过 5 个字符
input.skip(5);

// 读取字符
input.read(array);

System.out.println("跳过 5 个字符后的数据:");
System.out.println(array);

// 关闭阅读器
input.close();
}

catch (Exception e) {
e.getStackTrace();
}
}
}

输出

跳过 5 个字符后的数据:
is a line of text inside the file.

在上面的示例中,我们使用了 skip() 方法从文件阅读器中跳过 5 个字符。因此,原始文件中的字符 'T''h''i''s'' ' 被跳过了。

close() 方法

要关闭缓冲阅读器,我们可以使用 close() 方法。一旦调用了 close() 方法,我们就不能再使用阅读器来读取数据。

BufferedReader 的其他方法

方法描述
ready()检查文件阅读器是否准备好读取
mark()标记阅读器中已读取数据的位置
reset()将控制权返回到阅读器中设置标记的点

要了解更多关于 BufferedReader 的信息,请访问 Java BufferedReader (官方 Java 文档)