Reader字符输入流
Reader字符输入流
Reader (抽象类)
├── InputStreamReader
│ └── FileReader
├── BufferedReader
├── CharArrayReader
├── PipedReader
├── FilterReader
│ └── PushbackReader
└── StringReader
Reader 是 Java 中用于读取字符数据的抽象类,它是所有字符输入流的基类。与 InputStream(字节输入流)不同,Reader 是以字符为单位读取数据的,适用于处理文本数据
常用方法
-
int read()
-
作用: 从输入流中读取一个字符
-
返回值: 返回读取的字符(0 到 65535 之间的整数)。如果到达流的末尾,则返回 -1
Reader reader = new FileReader("example.txt"); int data = reader.read(); // 读取一个字符 while (data != -1) { System.out.print((char) data); // 将字符打印到控制台 data = reader.read(); // 继续读取下一个字符 } reader.close();
-
-
int read(char[] cbuf)
-
作用: 从输入流中读取一定数量的字符,并将其存储到字符数组 cbuf 中
-
返回值: 返回实际读取的字符数。如果到达流的末尾,则返回 -1
Reader reader = new FileReader("example.txt"); char[] buffer = new char[1024]; // 创建一个缓冲区 int charsRead = reader.read(buffer); // 读取数据到缓冲区 while (charsRead != -1) { System.out.print(new String(buffer, 0, charsRead)); // 处理读取的数据 charsRead = reader.read(buffer); // 继续读取 } reader.close();
-
常用实现类
-
FileReader: 用于从文件中读取字符数据import java.io.FileReader; import java.io.IOException; import java.io.Reader; public class ReaderExample { public static void main(String[] args) { try (Reader reader = new FileReader("example.txt")) { char[] buffer = new char[1024]; int charsRead; while ((charsRead = reader.read(buffer)) != -1) { System.out.print(new String(buffer, 0, charsRead)); // 输出读取的数据 } } catch (IOException e) { e.printStackTrace(); } } } -
BufferedReader: 提供缓冲功能,提高读取效率import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.Reader; public class BufferedReaderExample { public static void main(String[] args) { try (Reader reader = new BufferedReader(new FileReader("example.txt"))) { char[] buffer = new char[1024]; int charsRead; while ((charsRead = reader.read(buffer)) != -1) { System.out.print(new String(buffer, 0, charsRead)); // 输出读取的数据 } } catch (IOException e) { e.printStackTrace(); } } } -
InputStreamReader: 将字节流转换为字符流(可以指定字符编码)import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.StandardCharsets; public class InputStreamReaderExample { public static void main(String[] args) { try (Reader reader = new InputStreamReader(new FileInputStream("example.txt"), StandardCharsets.UTF_8)) { char[] buffer = new char[1024]; int charsRead; while ((charsRead = reader.read(buffer)) != -1) { System.out.print(new String(buffer, 0, charsRead)); // 输出读取的数据 } } catch (IOException e) { e.printStackTrace(); } } }

浙公网安备 33010602011771号