PrintStream是处理流、装饰流(用于System.out),打印的所有字符都使用平台 的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类
PrintStream功能:
1.PrintStream 能够方便地打印各种数据值表示形式
2.自动刷新
程序-(写入)->PrintStream(OutputStream)-(写入)->文件
construction | description |
---|---|
PrintStream(File file, String csn) | 创建具有指定文件和字符集且不带自动行刷新的新打印流。 |
PrintStream(String fileName, String csn) | 创建具有指定文件名称和字符集且不带自动行刷新的新打印流。 |
PrintStream(OutputStream out, boolean autoFlush, String encoding) | 创建新的打印流。 |
Modifier and Type | function | description |
---|---|---|
PrintStream | PrintStream append(char c) | 将指定字符添加到此输出流。 |
测试程序:
public class PrintStreamTest {
public static void main(String[] args) throws FileNotFoundException {
// System.out默认输出都控制台,因此打印流ps将内容打印到控制台
PrintStream ps = System.out;
ps.println("打印流");
ps.println(true);
// 打印流ps将内容打印到文件流test.txt(+true能自动刷新)
ps = new PrintStream(new BufferedOutputStream(new FileOutputStream("print.txt")),true);
ps.println("打印流");
ps.println(true);
ps.close();/*关闭FileOutputStream*/
// 重定向输出端
System.setOut(ps);
System.out.println("原本是打印到控制台的,重定向输出端为当前这个PrintStream");
// 重定向回控制台(+true能自动刷新)
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out)),true));
System.out.println("我又回来控制台啦!");
ps.close();/*关闭FileOutputStream*/
}
}
测试结果:
- 控制台:
打印流
true
我又回来控制台啦!
- print.txt文件: