Java字符输入流Reader
在Java中,Reader
是一个抽象类,属于java.io
包,主要用于字符输入流的处理。它是所有字符输入流的超类,提供了读取字符、数组和行的基本方法。Reader
类的主要目的是处理字符数据,而不是字节数据。
Reader
类的基本概念Reader
类的主要功能是从字符输入流中读取数据。它的子类包括:
FileReader
:从文件中读取字符。BufferedReader
:提供缓冲功能,能够高效地读取字符、数组和行。CharArrayReader
:从字符数组中读取字符。StringReader
:从字符串中读取字符。Reader
类的常用方法Reader
类提供了一些常用的方法,以下是一些重要的方法:
int read()
: 读取单个字符并返回字符的整数值。如果到达流的末尾,则返回 -1。int read(char[] cbuf)
: 读取字符到数组中,返回实际读取的字符数。int read(char[] cbuf, int off, int len)
: 从输入流中读取字符到数组的指定位置。void close()
: 关闭流并释放与之关联的资源。boolean ready()
: 判断流是否准备好可以被读取。下面是一个使用FileReader
和BufferedReader
的示例,演示如何从文件中读取字符。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReaderExample {
public static void main(String[] args) {
// 文件路径
String filePath = "example.txt";
// 使用 try-with-resources 语句自动关闭资源
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
// 逐行读取文件内容
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
BufferedReader
和FileReader
类,以及IOException
异常类。try-with-resources
语句可以确保在使用完流后自动关闭它,避免资源泄露。BufferedReader
包装FileReader
,以提高读取效率。readLine()
方法逐行读取文件内容,直到文件结束(返回null
)。IOException
,以处理文件读取过程中可能出现的错误。Reader
类时,确保在完成操作后关闭流,以释放系统资源。BufferedReader
可以显著提高读取效率,尤其是在处理大文件时。FileReader
使用的是平台默认的字符编码。如果需要指定字符编码,可以使用InputStreamReader
。Reader
类及其子类是Java中处理字符输入流的基础。通过合理使用这些类,可以高效地读取文本文件和其他字符数据。理解Reader
的工作原理和使用方法是Java开发者的重要技能之一。