我们知道Java输出流有OutputStream,怎么又冒出了一个打印流呢?因为OutputStream只有三个write()输出方法,参数全都是字节。如果我们要把String或int或double类型的数据输出,都要先把它们转换成字节或字节数组,再进行write()输出,这样使用起来稍微有点麻烦,所以就有了PrintStream这个类来简化我们的操作。

PrintStream有各种类型数据的print()输出方法,还有println()换行输出。那么它和OutputStream有没有什么关系呢?

它们之间的继承关系如下:

java.lang.Objectjava.io.OutputStreamjava.io.FilterOutputStreamjava.io.PrintStream

原来PrintStream是OutputStream的子类,再来看PrintStream的构造方法(其中一个):

public PrintStream(OutputStream out)

子类接收父类的实例化对象,说明PrintStream类中有一个OutputStream的成员变量,这个构造方法用来给该成员变量赋值。如果我们想要把内容打印到文件,就可以传入FileOutputStream对象;如果我们想要把内容打印到内存,就可以传入ByteArrayOutputStream对象……读到这里,有没有觉得它很像一种设计模式——装饰器模式。OutputStream是抽象构件,定义了一系列方法,FileOutputStream是具体构件,实现了OutputStream定义的那些方法,FilterOutputStream就是抽象装饰类,它接收OutputStream子类作为参数,并且简单的重写了OutputStream的所有方法,PrintStream是具体装饰类,它继承FilterOutputStream的所有方法,并且又额外定义了自己的一些方法(如那些print()方法)。

装饰模式包含如下角色:

  • Component: 抽象构件(Transform)
  • ConcreteComponent: 具体构件(Car)
  • Decorator: 抽象装饰类(Changer)
  • ConcreteDecorator: 具体装饰类(Robot、Airplane)

示例:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;public class Main {public static void main(String[] args) throws IOException {PrintStream p=new PrintStream(new FileOutputStream(new File("e:\\hello.txt")));String str="hello world";int i=5;double d=7.9;p.println(str);p.println(i);p.println(d);p.close();}
}

运行结果:

hello world
5
7.9

还有一个类是PrintWriter,与PrintStream相似,实现了PrintStream中的所有 print 方法。PrintStream打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter类。

Java打印流——PrintStream相关推荐

  1. JAVA打印流PrintStream 常用方式

    JAVA打印流PrintStream 常用方式 打印流:PrintStream : 继承于OutputStream ,可以使用OutputStream的方法 ***主要用于改变标准输出流方向. (1) ...

  2. java io流printstream_java IO流:打印流 PrintStream

    打印流 PrintStream PrintStream extends FilterOutputStream PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式 特 ...

  3. Java打印流(PrintStream/PrintWriter)

    概念 打印流是输出信息最方便的类,注意包含字节打印流PrintStream和字符打印流PrintWriter.打印流提供了非常方便的打印功能,可以打印任何类型的数据信息,例如:小数,整数,字符串.而且 ...

  4. IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream...

    一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest {publi ...

  5. 打印流PrintStream和配置流Propeties

    打印流PrintStream和PrintWriter /*** 打印流PrintStream*/@Testpublic void Print() throws IOException {PrintSt ...

  6. (JAVA)从零开始之--打印流PrintStream记录日志文件

    这里的记录日志是利用打印流来实现的. 文本信息中的内容为String类型.而像文件中写入数据,我们经常用到的还有文件输出流对象FileOutputStream. 1 File file = new F ...

  7. java基础----IO打印流PrintStream

    package com.henu.io;import java.io.PrintStream;/** •public PrintStream(String fileName): 使用指定的文件名创建一 ...

  8. 【java笔记】打印流printStream

    printStream打印流: 继承了OutPutStream 1.只负责输出,不负责读取. 2.不抛出IOException 3.特有的方法:print/printLn(任意类型的值) 构造方法: ...

  9. 打印流-PrintStream和PrintWriter

    IO包中的其他功能流对象 功能流对象 特点:解决问题的特有方法. 打印流--必须是输出流(两个都是) PrintStream(字节流) PrintWriter(字符流) 特点:打印.不抛异常 打印的目 ...

最新文章

  1. 易语言组合框连接mysql_用mysql填充的多动态组合框
  2. “计算机艺术之父”、现代计算机技术先驱查理斯·苏黎去世,享年99岁
  3. python保存的是什么类型文件_python-----基本的数据类型和文件操作
  4. 构造函数及析构函数的调用
  5. 前端学习(2478):请求提交
  6. java: cannot execute binary file问题的解决
  7. 软件测试——第三次作业
  8. 上班两年干了些啥?该思考人生
  9. 从迁移学习到图像合成
  10. win10重装应用商店
  11. 视频教程-PO设计模式(精讲)-软件测试
  12. Javase day06_作业
  13. 数据有效性做下拉菜单
  14. 无线WiFi可以网络唤醒远程开机吗?WakeOnLan常见问题总结
  15. 程序员过失泄露代码违法吗_软件过失的23种模式
  16. 活着活着,就明白了(精辟)
  17. win10 telnet不是内部或外部命令(已解决)
  18. 【Wi-Fi 802.11协议】管理帧 之 Beacon帧详解
  19. 四边形围栅栏c语言长度,不同结构围油栏拦油特性数值的研究.pdf
  20. 32x32Booth乘法器

热门文章

  1. Dell E7440加装硬盘
  2. Docker部署Jenkins服务
  3. 关于Keil编译程序出现“File has been changed outside the editor,reload?”的解决方法
  4. 美国L-1A签证简介
  5. 十一大开源机器人平台
  6. Psim仿真_pi输出加限幅(疑惑)
  7. pandas str方法的使用
  8. 云影数码工作室-创业计划书
  9. 服务器增加路由的命令行,服务器命令行配置路由和ip
  10. Eclipse Embedded CDT