[十四]JavaIO之PrintStream

功能简介
 
PrintStream 为其余输出流添加了功能,使它们可以方便地打印各类数据值表示形式
装饰器模式中具体的装饰类
它提供的功能就是便捷的打印各类数据形式
FilterInputStream为装饰器模式中的抽象角色
简言之,PrintStream能够快捷的打印输出各类类型的数据
 
image_5b99212b_1dce
关键字段
 
autoFlush是否自动刷新的标志位
所谓自动刷新,就是每次调用方法后,看下标志位,若是设置了,那么调用一下out.flush()
好比下面这段代码

image_5b99212b_703d

因此,为了自动刷新,能够建立一个 PrintStream
这个autoFlush 会在:
写入byte数组以后,println调用,写入一个换行符,或者写入一个  '\n'
数组

这几种场景下自动刷新(若是是true)app

 
 
构造方法
先看下他的私有的构造方法
其余全部的方法都是调用这两个构造方法

image_5b99212b_76d8
两个私有构造方法, 关注的主要信息就是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()方法进行返回
image_5b99212b_1d86

 
主要方法介绍

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)  他是特例

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