Java BufferedReader 类详细介绍以及用法详解
在本教程中,我们将通过示例了解 Java BufferedReader 类以及相关用法。
在本教程中,我们将通过示例了解 Java FileReader 类以及相关用法。
java.io
包的 BufferedReader
类可以包装其他 Reader
对象,以更有效地以字符为单位读取数据。
BufferedReader
类扩展了抽象类 Reader
。
BufferedReader 的原理
BufferedReader
内部维护了一个容量为 8192
的字符缓冲区。
在读操作期间, BufferedReader
从磁盘中读取一大块字符并存储在内部缓冲区中,并且从内部缓冲区中单独读取字符。
BufferedReader
减少了与磁盘的通信次数,因此提高了读取的效率。
创建 BufferedReader
我们使用 BufferedReader
的构造方法创建对象,需要通过构造方法的参数指定要包装的 Reader
对象。如下:
FileReader file = new FileReader(String file);
BufferedReader buffer = new BufferedReader(file);
在上面的例子中,我们创建了一个 BufferedReader
对象,它包装了一个 FileReader
对象。
BufferedReader
内部缓冲区的默认大小为 8192
个字符,但是我们也可以指定内部缓冲区的大小。如下:
BufferedReader buffer = new BufferedReader(file, int size);
缓冲区越大,则与磁盘交互的次数越小,但是也会占用更大的内存。这需要我们根据自己的实际情况衡量。
BufferedReader 的方法
FileReader
类完全实现了 Reader
类定义的所有抽象方法。
read() 方法
ready()
- 检查Reader
流是否准备好被读取read(char[] array)
- 从流中读取字符并存储在指定的数组中read(char[] array, int start, int length)
- 读取长度为length
字符并存储在指定数组start
开始的位置中
假设我们有一个文件 input.txt
内容如下:
This is a line of text inside the file.
我们使用 FileReader
读取文件内容。
import java.io.FileReader;
import java.io.BufferedReader;
public class Main {
public static void main(String[] args) {
char[] array = new char[100];
try {
FileReader file = new FileReader("input.txt");
BufferedReader input = new BufferedReader(file);
input.read(array);
System.out.println("Data in the file: ");
System.out.println(array);
input.close();
} catch (Exception e) {
e.getStackTrace();
}
}
}
输出
Data in the file:
This is a line of text inside the file.
在上面的示例中,我们使用创建了一个包装了 FileReader
对象的 BufferedReader
对象,并与文件 input.txt
关联起来。如下:
FileReader file = new FileReader("input.txt");
BufferedReader input = new BufferedReader(file);
然后我们使用 read()
方法读取数据,最后使用 close()
方法关闭了对象。
跳过()方法
skip()
方法丢弃和跳过指定数量的字符。例如,
import java.io.FileReader;
import java.io.BufferedReader;
public class Main {
public static void main(String[] args) {
char[] array = new char[100];
try {
FileReader file = new FileReader("input.txt");
BufferedReader input = new BufferedReader(file);
input.skip(5);
input.read(array);
System.out.println("Data after skipping 5 characters:");
System.out.println(array);
input.close();
} catch (Exception e) {
e.getStackTrace();
}
}
}
输出
Data after skipping 5 characters:
is a line of text inside the file.
在上面的例子中,我们使用了 skip()
方法跳过 5 个字符。因此,字符 'T'
, 'h'
, 'i'
, 's'
和 ' '
不会输出。
BufferedReader 的其他方法
方法 | 描述 |
---|---|
ready() |
检查流是否准备好被读取 |
mark() |
标记流中已读取数据的位置 |
reset() |
将控制返回到流中设置标记的点 |