前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[十四]JavaIO之PrintStream

[十四]JavaIO之PrintStream

作者头像
noteless
发布2018-09-14 14:49:26
5790
发布2018-09-14 14:49:26
举报
文章被收录于专栏:notelessnoteless

功能简介

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

简言之,PrintStream可以快捷的打印输出各种类型的数据

image_5b99212b_1dce
image_5b99212b_1dce

关键字段

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()

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档