📅  最后修改于: 2023-12-03 14:59:35.145000             🧑  作者: Mango
BufferedReader
类是Java IO库中一个常用的输入流类。它提供了一种缓存输入流的机制,适用于需要读取大量数据的情况。与 InputStreamReader
不同,BufferedReader
可以读取字符或行,而不只是字节。
在使用 BufferedReader
类时,通常需要将其与输入流一起使用。例如,可以使用 InputStreamReader
将用于创建文件读取器(即输入流),然后将其传递给 BufferedReader
,从而创建一个缓冲区,以优化读取输入流数据的性能。
BufferedReader
类有三种构造函数,其中每种都支持不同的输入方式。
BufferedReader(Reader in)
:创建一个缓冲字符输入流,以读取给定字符输入流。BufferedReader(Reader in, int sz)
:创建一个缓冲字符输入流,以使用指定缓冲区大小读取给定字符输入流。BufferedReader(InputStream in)
:创建一个缓冲字符输入流,以使用默认缓冲区大小从给定字节输入流读取数据。BufferedReader
类支持多种方法,这些方法可用于读取输入流数据。以下是一些最常用的方法:
int read()
:读取单个字符。int read(char[] cbuf, int off, int len)
:读取字符数据到数组中。String readLine()
:读取一行字符数据。boolean ready()
:测试是否可以从该流读取数据。void close()
:关闭该流并且释放与之关联的所有资源。以下是一个示例代码片段,演示如何使用 BufferedReader
类读取文件中的数据:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在上面的示例中,我们首先创建了一个 BufferedReader
对象来读取一个名为 "file.txt" 的文件。然后,我们使用 readLine()
方法读取文件中的每一行数据,如果文件已全部读取,则 readLine()
方法将返回 null
。最后,我们在控制台上输出读取到的每一行数据。
BufferedReader
类提供了一种缓存输入流的机制,适用于需要读取大量数据的情况。读取输入流数据时,可以使用 read()
、readLine()
等方法。记住一定要关闭 BufferedReader 实例以及关联的所有资源。