为了执行基于字符的 i/o 操作,java 提供了自己的基于字符的流层次结构,以及 reader 和 writer 等抽象类。这些类允许您直接读写字符,使它们比字节流更适合文本数据。这些类的主要方法处理读取和写入操作,并在发生错误时抛出 ioexception。
字符流结构
主要抽象类:
- reader:读取字符的基础。
- writer:书写角色的基础。
这些类构成了字符流 i/o 操作的最小结构,其方法适用于所有子类。
带有字符流的控制台输入
对于国际化程序或操作文本的程序,最好使用字符流从控制台读取字符。由于system.in是字节流,因此需要针对字符流进行适配。
为此,我们使用:
立即学习“Java免费学习笔记(深入)”;
- inputstreamreader:将字节转换为字符。
- bufferedreader:通过缓冲输入来提高效率。
读取控制台输入的示例
要使用 bufferedreader 读取控制台输入,我们首先使用 inputstreamreader 将 system.in 转换为字符流:
import java.io.*;
public class ConsoleReaderExample {
public static void main(String args[]) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
System.out.print("Digite uma linha de texto: ");
String linha = reader.readLine();
System.out.println("Você digitou: " + linha);
} catch(IOException e) {
System.out.println("Erro de entrada/saída: " + e);
}
}
}
代码说明
- inputstreamreader:将 system.in 中的字节流转换为字符流。
- bufferedreader:用于高效读取字符、字符串和行。
角色流的优点
- 国际化:兼容不同的字符集。
- 效率:bufferedreader 允许您一次读取整行,简化流程并减少系统调用。
这些字符流使文本处理变得更加容易,非常适合以字符和文本为主要焦点的数据输入和文件操作。











