功能简介
 
PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式
装饰器模式中具体的装饰类
它提供的功能就是便捷的打印各种数据形式

FilterInputStream为装饰器模式中的抽象角色

简言之,PrintStream可以快捷的打印输出各种类型的数据
 
关键字段
 
autoFlush是否自动刷新的标志位
所谓自动刷新,就是每次调用方法后,看下标志位,如果设置了,那么调用一下out.flush()
比如下面这段代码

所以,为了自动刷新,可以创建一个 PrintStream
这个autoFlush 会在:
写入byte数组之后,println调用,写入一个换行符,或者写入一个  '\n'

这几种场景下自动刷新(如果是true)

 
 
构造方法
先看下他的私有的构造方法
其他所有的方法都是调用这两个构造方法
两个私有构造方法, 关注的主要信息就是OutputStream和autoFlush和 charset三个字段
OutputStream 作为实际被装饰的实体类
charset 指定的字符编码,如果不指定,那么将会使用默认的
autoFlush  默认是false
PrintStream(OutputStream)
PrintStream(OutputStream, boolean)
PrintStream(OutputStream, boolean, String)
直接传递OutputStream
PrintStream(String)
PrintStream(String, String)
PrintStream(File)
PrintStream(File, String)
通过File或者路径名 构造FileOutputStream  作为FileOutputStream
可以看得出来,文件相关的,autoFlush全部都是false
 
 
 
PrintStream 永远不会抛出 IOException
通过代码可以看得出来
内部维护了一个trouble标志位
发生了IOException异常时,捕捉后转换为trouble=true
可以通过checkError()方法进行返回
 
主要方法介绍

write方法
write(int)
write(byte[], int, int)
说到这,write基本不用介绍了,代码上面一段也已经贴出来
增加了自动刷新的功能,并且还不会抛出异常
 
print系列
println() 通过写入行分隔符字符串终止当前行。行分隔符字符串由系统属性 line.separator 定义,不一定是单个换行符 ('\n') 
 
print(boolean)
String.valueOf(boolean)生成字符串转换为字节
以 write(int) 方法的方式写入这些字节
+println() =  println(boolean)
print(char)
字符转换为一个或多个字节
以 write(int) 方法的方式写入这些字节
+println() =  println(char)
print(int)
String.valueOf(int)生成字符串转换为字节
以 write(int) 方法的方式写入这些字节
+println() = println(int)
print(long)
String.valueOf(long)生成字符串转换为字节
以 write(int) 方法的方式写入这些字节
+println() = println(long)
print(float)
String.valueOf(float)生成字符串转换为字节
以 write(int) 方法的方式写入这些字节
+println() = println(float)
print(double)
String.valueOf(double)生成字符串转换为字节
以 write(int) 方法的方式写入这些字节
+println() = println(double)
print(char[])
字符转换为字节
以 write(int) 方法的方式写入这些字节
+println() = println(char[])
print(String)
如果参数为 null,则打印字符串 "null"
否则转换为字节
以 write(int) 方法的方式写入这些字节
+println() = println(String)
print(Object)
String.valueOf(Object)生成字符串转换为字节
以 write(int) 方法的方式写入这些字节
不存在print(Object) +println()的情况
println(Object)==先调用 String.valueOf(x) 获取字符串值,然后再 print(String)+ println()
 
print将会把数据转换为他们的字符串形式,然后转换为字节,然后在将字节写入
print 与println结合 可以变成println的形式
从代码也可以很直白的看出来,调用之后,然后newLine()
不过需要注意的是print(Object)  他是特例
 
 
printf(String, Object...)
printf(Locale, String, Object...)
format(String, Object...)
format(Locale, String, Object...)

产生格式化输出的每个方法都需要格式字符串 和参数列表
格式字符串是一个 String,它可以包含固定文本以及一个或多个嵌入的格式说明符
这个是个类似C语言printf的方法
使用的时候不熟悉直接查表对照即可
printf和format一回事
 
append(char)
 
将指定字符添加到此输出流。
调用此方法的 out.append(c) 形式,行为与以下调用完全相同:out.print(c)
最后加一个跟写一个显然没什么不同
append(CharSequence)
将指定字符序列添加到此输出流
append(CharSequence, int, int) 将指定字符序列的子序列添加到此输出流
 
flush()
close()
 
 
 

[十四]JavaIO之PrintStream的更多相关文章

  1. [二十四]JavaIO之PrintWriter

      功能简介   PrintWriter   向文本输出流打印对象的格式化表示形式 他与PrintStream的逻辑上功能目的是相同的--他们都想做同一件事情--更便捷的格式化打印输出   Print ...

  2. How Tomcat Works(十四)

    我们已经知道,在tomcat中有四种类型的servlet容器,分别为Engine.Host.Context 和Wrapper,本文接下来对tomcat中Wrapper接口的标准实现进行说明. 对于每个 ...

  3. 我的MYSQL学习心得(十四) 备份和恢复

    我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...

  4. 雅虎(yahoo)前端优化十四条军规

    第一条.尽可能的减少 HTTP 的请求数 (Make Fewer HTTP Requests ) http请求是要开销的,想办法减少请求数自然可以提高网页速度.常用的方法,合并css,js(将一个页面 ...

  5. Bootstrap<基础二十四> 缩略图

    Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...

  6. Bootstrap<基础十四> 按钮下拉菜单

    使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉菜单,只需要简单地在在一个 .btn-group 中放置按钮和下拉菜单即可.也可以使用 <span class=&qu ...

  7. AngularJs的UI组件ui-Bootstrap分享(十四)——Carousel

    Carousel指令是用于图片轮播的控件,引入ngTouch模块后可以在移动端使用滑动的方式使用轮播控件. <!DOCTYPE html> <html ng-app="ui ...

  8. C#编程总结(十四)dynamic

    http://www.cnblogs.com/yank/p/4177619.html C#编程总结(十四)dynamic 介绍 Visual C# 2010 引入了一个新类型 dynamic. 该类型 ...

  9. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

    解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...

随机推荐

  1. FCC学习笔记(一)

    除了像素,你还可以使用百分比来指定border-radius边框半径的值. 给你的猫咪图片一个50%的border-radius. a元素,也叫anchor(锚点)元素,既可以用来链接到外部地址实现页 ...

  2. esxi 精简置备只增不减问题解决方法(转)

    esxi 精简置备只增不减问题解决方法 众所周知Thin Provisioning模式下的虚拟机磁盘的空间会随需增长,可以很大程度上帮助我们节约空间,可是,凡增长过后的空间,即使清除了导致增长的文件后 ...

  3. window下如何使用文本编辑器(如记事本)创建、编译和执行Java程序

    window下如何使用文本编辑器(如记事本)创建Java源代码文件,并编译执行 第一步:在一个英文目录下创建一个 .text 文件 第二步:编写代码 第三步:保存文件 方法一:选择 文件>另存为 ...

  4. 201771010126 王燕《面向对象设计 java》第十五周实验总结

    第一部分  理论部分 ◼ JAR文件◼ 应用程序首选项存储◼ Java Web Start JAR文件: 1.Java程序的打包:程序编译完成后,程序员将.class文件压缩打包为.jar文件后,GU ...

  5. Java EE 导图

  6. Java GC相关知识

    Java堆的分类 分为两类:YoungGen和OldGen.其中,YoungGen分为三部分:eden,from survivor和to survivor,比例默认是:8:1:1 PermGen不属于 ...

  7. 小甲鱼Python3笔记

    000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...

  8. 记一次JVM故障排除

    今天,自己开发的事件驱动的java大规模爬虫程序上线了几个新任务后突然异常. 异常: 程序业务异常,经查看CPU利用率满,内存满,一直报OOM,目测有内存泄露.如下图所示,四核16G的内粗,CPU高达 ...

  9. SharePoint 更改管理帐户密码步骤

    // https://wenku.baidu.com/view/0fffab761ed9ad51f01df2df.html \

  10. Samba部署共享服务

    在本地PC文件共享 Samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享资源软件,实现了Windows和Linux系统间的文件共享 1.安装Samba服务程序    yum in ...