打印流
Java中的打印流(PrintStream和PrintWriter)是用于方便地输出数据到控制台或文件的工具类。它们提供了一系列的方法来格式化和打印各种数据类型。
PrintStream
PrintStream是Java中用于打印输出的字节流类。它是OutputStream的子类,提供了一系列用于打印数据的方法,方便输出到控制台或文件。
PrintStream类的常用构造方法有以下几种:
- PrintStream(OutputStream out): 创建一个PrintStream对象,指定输出目标为指定的字节输出流。
- PrintStream(OutputStream out, boolean autoFlush): 创建一个PrintStream对象,指定输出目标为指定的字节输出流,并设置是否在写入操作后自动刷新输出缓冲区。
- PrintStream(File file): 创建一个PrintStream对象,指定输出目标为指定的文件。
- PrintStream(String fileName): 创建一个PrintStream对象,指定输出目标为指定文件名对应的文件。
PrintStream类常用方法的代码示例
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class PrintStreamExample {
public static void main(String[] args) {
try {
// 创建PrintStream对象,并指定输出目标为文件
PrintStream ps = new PrintStream(new FileOutputStream("output.txt"));
// 打印字符串
ps.print("Hello, ");
ps.println("World!");
// 打印整数
ps.printf("The answer is %d\n", 42);
// 打印浮点数
ps.printf("The value of Pi is %.2f\n", Math.PI);
// 关闭PrintStream
ps.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
上述代码中,首先创建了一个PrintStream对象,将其输出目标设置为一个文件。然后使用PrintStream的print、println和printf方法进行打印输出。最后关闭PrintStream对象。
执行上述代码后,将会在当前目录下生成一个名为"output.txt"的文件,内容如下:
Hello, World!
The answer is 42
The value of Pi is 3.14
通过PrintStream类的方法,我们可以方便地打印不同类型的数据,并且支持格式化输出。
PrintWriter
PrintWriter是Java中用于打印输出的字符流类。它是Writer的子类,提供了一系列用于打印数据的方法,方便输出到控制台或文件。
PrintWriter类的常用构造方法有以下几种:
- PrintWriter(Writer out): 创建一个PrintWriter对象,指定输出目标为指定的字符输出流。
- PrintWriter(Writer out, boolean autoFlush): 创建一个PrintWriter对象,指定输出目标为指定的字符输出流,并设置是否在写入操作后自动刷新输出缓冲区。
- PrintWriter(File file): 创建一个PrintWriter对象,指定输出目标为指定的文件。
- PrintWriter(String fileName): 创建一个PrintWriter对象,指定输出目标为指定文件名对应的文件。
PrintWriter类常用方法的代码实现
import java.io.*;
public class PrintWriterDemo {
public static void main(String[] args) throws FileNotFoundException {
PrintWriter printWriter = new PrintWriter(System.out);
// 使用print()方法打印数据
printWriter.print("Hello ");
printWriter.print(123);
printWriter.print(" World");
// 使用println()方法打印数据并换行
printWriter.println();
printWriter.println("This is a new line");
// 使用printf()方法格式化打印数据
printWriter.printf("Value: %d, Name: %s", 100, "John");
printWriter.close();
}
}
上述代码演示了PrintWriter类的常用方法,包括print()方法用于打印数据,println()方法用于打印数据并换行,以及printf()方法用于格式化打印数据。请注意,代码中使用的PrintWriter对象是针对标准输出流(System.out)的,你也可以将其替换为其他输出流,如文件输出流(FileOutputStream)。
执行以上代码将会在控制台输出以下内容:
Hello 123 World
This is a new line
Value: 100, Name: John
PrintStream和PrintWriter的区别
-
输出目标:
- PrintStream:主要用于输出到字节流,通常用于输出到控制台或文件。它继承自OutputStream类,可以将输出的数据转换成字节流进行输出。
- PrintWriter:主要用于输出到字符流,通常用于输出到控制台或文件。它继承自Writer类,可以将输出的数据转换成字符流进行输出。
-
字符编码:
- PrintStream:使用平台默认的字符编码进行输出,默认情况下是使用系统的默认字符编码(如UTF-8或GBK)。
- PrintWriter:可以指定字符编码进行输出,可以通过构造方法或调用其相关方法进行设置。
-
自动刷新:
- PrintStream:默认情况下,不会自动刷新输出缓冲区,需要手动调用flush方法或者关闭流才会刷新输出。可以通过设置autoFlush参数为true来开启自动刷新。
- PrintWriter:默认情况下,不会自动刷新输出缓冲区,需要手动调用flush方法或者关闭流才会刷新输出。可以通过构造方法设置autoFlush参数为true来开启自动刷新。
-
异常处理:
- PrintStream:在输出过程中,如果发生错误,会抛出IOException。
- PrintWriter:在输出过程中,如果发生错误,会抛出IOException。
-
打印方法:
- PrintStream:提供了print和println系列方法,可以打印各种类型的数据,包括基本数据类型和对象。
- PrintWriter:也提供了print和println系列方法,可以打印各种类型的数据,包括基本数据类型和对象。