BufferedReader PrintWriter
BufferedReader
和 PrintWriter
是 Java 中用于高效读写数据的类,BufferedReader
主要用于从字符输入流中读取文本,PrintWriter
用于将格式化的对象打印到文本输出流。下面为你详细介绍它们的用法并给出示例。
1. BufferedReader
简介
BufferedReader
类提供了缓冲功能,它从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。通常与 InputStreamReader
结合使用,InputStreamReader
用于将字节流转换为字符流。
2. PrintWriter
简介
PrintWriter
类用于向文本输出流打印对象的格式化表示形式。它提供了多种 print
和 println
方法,用于输出不同类型的数据,并且可以自动刷新缓冲区。
3. 用法示例
收起
java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class MainThrowsExample {
public static void main(String[] args) throws IOException {
// 创建 BufferedReader 对象,用于从标准输入读取数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 创建 PrintWriter 对象,用于向标准输出写入数据
PrintWriter pw = new PrintWriter(System.out, true);
// 提示用户输入信息
pw.println("请输入您的姓名:");
// 读取用户输入的姓名
String name = br.readLine();
// 提示用户输入年龄
pw.println("请输入您的年龄:");
// 读取用户输入的年龄
String ageStr = br.readLine();
int age = Integer.parseInt(ageStr);
// 输出用户信息
pw.println("您好," + name + "!您的年龄是 " + age + " 岁。");
// 关闭资源
br.close();
pw.close();
}
}
4. 代码解释
4.1 创建对象
收起
java
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(System.out, true);
BufferedReader
:通过new InputStreamReader(System.in)
将标准输入流(字节流)转换为字符流,再将其作为参数传递给BufferedReader
构造函数,创建一个带有缓冲功能的字符输入流。PrintWriter
:将标准输出流System.out
作为参数传递给PrintWriter
构造函数,第二个参数true
表示自动刷新缓冲区,即每次调用println
方法后会自动刷新缓冲区。
4.2 读取输入
收起
java
String name = br.readLine();
int age = Integer.parseInt(br.readLine());
br.readLine()
:从输入流中读取一行文本,并返回一个字符串。Integer.parseInt()
:将读取的字符串转换为整数。
4.3 输出信息
收起
java
pw.println("请输入您的姓名:");
pw.println("您的姓名是:" + name);
pw.println()
:将指定的内容输出到标准输出,并在末尾添加换行符。
4.4 异常处理
收起
java
catch (IOException e) {
pw.println("读取输入时发生错误:" + e.getMessage());
} catch (NumberFormatException e) {
pw.println("输入的年龄不是有效的整数:" + e.getMessage());
}
IOException
:处理输入输出过程中可能出现的异常。NumberFormatException
:处理将字符串转换为整数时可能出现的异常。
4.5 关闭资源
收起
java
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
pw.println("关闭 BufferedReader 时发生错误:" + e.getMessage());
}
if (pw != null) {
pw.close();
}
- 确保在程序结束时关闭
BufferedReader
和PrintWriter
,释放资源。
通过上述示例,你可以看到 BufferedReader
和 PrintWriter
的基本用法,它们在处理大量输入输出时可以提高程序的性能。
分享