Skip to content

PrintStream 和PrintWriter是 Java 中用于将数据打印到输出流的类。它们提供了一系列方便的方法来格式化和输出数据。

PrintStream是字节流,而PrintWriter是字符流。这意味着PrintStream可以直接处理字节数据,而PrintWriter需要通过字符编码将字符转换为字节。

以下是它们的主要区别:

  • 数据类型:PrintStream可以处理原始数据类型(如int、double等),以及字节数组和字节流。而PrintWriter则可以处理字符数据类型(如char、String等),以及字符数组和字符流。
  • 字符编码:PrintStream使用平台默认的字符编码进行字符到字节的转换。而PrintWriter允许指定字符编码,因此可以更灵活地处理不同的字符集。
  • 异常处理:PrintStream在遇到写入错误时会抛出IOException。而PrintWriter在遇到写入错误时会抛出UnsupportedEncodingException(如果指定了无效的字符编码)或者IOException。

下面是一个示例代码,演示了如何使用PrintStream和PrintWriter:

import java.io.*;

public class PrintExample {
    public static void main(String[] args) {
        try {
            // 使用PrintStream输出到控制台
            PrintStream ps = new PrintStream(System.out);
            ps.println("Hello, World!");

            // 使用PrintWriter输出到文件
            PrintWriter pw = new PrintWriter(new FileWriter("output.txt"));
            pw.println("Hello, World!");
            
            // 关闭输出流
            ps.close();
            pw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我们首先使用PrintStream将字符串"Hello, World!"打印到控制台。然后,我们使用PrintWriter将相同的字符串写入到文件"output.txt"中。

总结一下,PrintStream和PrintWriter都是用于将数据打印到输出流的类,但它们之间有一些区别,包括处理的数据类型、字符编码和异常处理方式。选择哪个类取决于你要处理的数据类型和需求。