java流家族_1.1.2 完整的流家族

1.1.2 完整的流家族

与C语言只有单一类型FILE*包打天下不同,Java拥有一个流家族,包含各种流类型,其数量超过60个!请参见图1-1和图1-2。

让我们把流家族中的成员按照它们的使用方法来进行划分,这样就形成了处理字节和字符的两个单独的层次结构。正如所见,InputStream和OutputStream类可以读写单个字节或字节数组,这些类构成了图1-1所示的层次结构的基础。要想读写字符串和数字,就需要功能更强大的子类,例如,DataInputStream和DataOutputStream可以以二进制格式读写所有的基本Java类型。***,还包含了多个很有用的流,例如,ZipInputStream和ZipOutputStream可以以常见的ZIP压缩格式读写文件。

e97b0a4ed2881529c050c404df0f9009.png

另一方面,对于Unicode文本,可以使用抽象类Reader和Writer的子类(请参见图1-2)。Reader和Writer类的基本方法与InputStream和OutputStream中的方法类似。

830a43db86b6ed2baa84c6d6768caf08.png

read方法将返回一个Unicode码元(一个在0~65535之间的整数),或者在碰到文件结尾时返回-1。write方法在被调用时,需要传递一个Unicode码元(请查看第Ⅰ卷第3章有关Unicode码元的讨论)。

bd1870c1f7575de2df88cbba7b907b86.png

还有4个附加的接口:Closeable、Flushable、Readable和Appendable(请查看图1-3)。前两个接口非常简单,它们分别拥有下面的方法:

55c374168dd3a5f7d14bb40ce0a8772d.png

InputStream、OutputStream、Reader和Writer都实现了Closeable接口。

注意:java.io.Closeable接口扩展了java.lang.AutoCloseable接口。因此,对任何Closeable进行操作时,都可以使用try-with-resource 语句(try-with-resource语句是指声明了一个或多个资源的try语句—译者注)。为什么要有两个接口呢?因为Closeable接口的close方法只抛出IOException,而AutoCloseable.close方法可以抛出任何异常。

而OutputStream和Writer还实现了Flushable接口。

Readable接口只有一个方法:

e41109b9fa1c0a923debd9b15737b96d.png

CharBuffer类拥有按顺序和随机地进行读写访问的方法,它表示一个内存中的缓冲区或者一个内存映像的文件(请参见1.7.1节“缓冲区数据结构”以了解细节)。

Appendable接口有两个用于添加单个字符和字符序列的方法:

7fe554cf0714e43c5523748d495fef14.png

CharSequence接口描述了一个char值序列的基本属性,String、CharBuffer、StringBuilder和StringBuffer都实现了它。

在流类的家族中,只有Writer实现了Appendable。

b34e18aab42300f7860a3b4d0a25d805.png

c53cdf85d66d64002237612d4a7e337d.png

【责任编辑:book TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值