概述
平时我们在控制台打印输出, 是调用 print 方法和 println 方法完成的, 这两个方法都来自于 java.io.PrintStream 类, 该类能够方便地打印各种数据类型的值, 是一种便捷的输出方式.
java.io.PrintStream: 打印流
PrintStream 为其他输出流添加了功能, 使它们能够方便地打印各种数据值表示形式.
PrintStream 特点:
只负责数据的输出, 不负责数据的读取
与其他输出流不同, PrintStream 永远不会抛出 IOException
有特有的方法, void print(任意类型的值)/void println(任意类型的值并换行)
构造方法:
PrintStream(File file): 输出的目的地是一个文件
PrintStream(OutputStream out): 输出的目的地是一个字节输出流
PrintStream(String fileName) : 输出的目的地是一个文件路径
成员方法
PrintStream extends OutputStream
继承自父类的成员方法:
public void close() : 关闭此输出流并释放与此流相关联的任何系统资源.
public void flush() : 刷新此输出流并强制任何缓冲的输出字节被写出.
public void write(byte[] b): 将 b.length 字节从指定的字节数组写入此输出流.
public void write(byte[] b, int off, int len) : 从指定的字节数组写入 len 字节, 从偏移量 off 开始输出到此输出流.
public abstract void write(int b) : 将指定的字节输出流.
注意:
如果使用继承自父类的 write 方法写数据, 那么查看数据的时候会查询编码表 97->a
如果使用自己特有的方法 print/println 方法写数据, 写的数据原样输出 97->97
代码演示
- package demo04;
- import java.io.FileNotFoundException;
- import java.io.PrintStream;
- public class Demo01PrintStream {
- public static void main(String[] args) throws FileNotFoundException {
- //System.out.println("HelloWorld");
- // 创建打印流 PrintStream 对象, 构造方法中绑定要输出的目的地
- PrintStream ps = new PrintStream("day21\\print.txt");
- // 如果使用继承自父类的 write 方法写数据, 那么查看数据的时候会查询编码表 97->a
- ps.write(97);
- // 如果使用自己特有的方法 print/println 方法写数据, 写的数据原样输出 97->97
- ps.println(97);
- ps.println(8.8);
- ps.println('a');
- ps.println("HelloWorld");
- ps.println(true);
- // 释放资源
- ps.close();
- }
- }
改变打印流向
System.out 就是 PrintStream 类型的, 只不过它的流向是系统规定的, 打印在控制台上. 不过, 既然是流对象, 我们就可以玩一个 "小把戏", 改变它的流向.
代码演示
- import java.io.FileNotFoundException;
- import java.io.PrintStream;
- /*
- 可以改变输出语句的目的地 (打印流的流向)
- 输出语句, 默认在控制台输出
- 使用 System.setOut 方法改变输出语句的目的地改为参数中传递的打印流的目的地
- static void setOut(PrintStream out)
- 重新分配 "标准" 输出流.
- */
- public class Demo02PrintStream {
- public static void main(String[] args) throws FileNotFoundException {
- System.out.println("我是在控制台输出");
- PrintStream ps = new PrintStream("day21\\ 目的地是打印流. txt");
- System.setOut(ps);// 把输出语句的目的地改变为打印流的目的地
- System.out.println("我在打印流的目的地中输出");
- ps.close();
- }
- }
来源: http://www.bubuko.com/infodetail-3346066.html