IO流学习(Java)(二)

在这里插入图片描述
完整的流家族
将流类家族中的成员按它们的使用方法进行划分,就可以形成处理字节和字符两个单独的层次接口,InputStream和OutputStream可以读写单个的字节或字节数组,这些类构成了如下图所示的层次结构的基础。要想读写字符串和数字,就需要功能更加强大的子类,例如,DataInputStream和DataOutputStream可以以二进制格式读写所有的基本Java类型。最后,还包含了多个很有用的流,例如,ZipInputStream和ZipOutputStream可以以常见的ZIP压缩格式读写文件。
在这里插入图片描述
另一方面,对于Unicode文本,可以使用抽象类Reader和Writer的子类,如下图所示,Reader和Writer类的基本方法与InputStream和OutputStream方法类似。
abstract int reader()
abstract void write(int c)

read方法将返回一个Unicode码元(作为一个在0~65535的整数),或者在碰到文件结尾时返回-1。write方法在调用时,要传递一个Unicode码元。
在这里插入图片描述
Java SE 5.0引入了4个附加的接口:Closeable、Flushable、Readable和Appendable,如下图所示,
他们别拥有

  1. Closeable接口只有一个方法:
    void close() throws IOException
    关闭此流并释放与其关联的所有系统资源。 如果流已经关闭,则调用此方法无效。
  2. Flushable接口也只有一个方法:
    void flush() throws IOException
    通过将任何缓冲的输出写入基础流来刷新此流。
  3. Readable接口也只有一个方法:
    int read​(CharBuffer cb) throws IOException
  4. Appendable接口有三个用于添加单个字符和字符序列的方法:
    1) Appendable append​(char c) throws IOException
    将指定的字符追加到此 Appendable 。
    2)Appendable append​(CharSequence csq) throws IOException
    将指定的字符序列追加到此Appendable 。
    根据哪个类实现字符序列csq ,可能不会追加整个序列。 例如,如果csq是CharBuffer,则追加的子序列由缓冲区的位置和限制定义。
    3)Appendable append​(CharSequence csq, int start, int end) throws IOException
    将指定字符序列的子序列追加到此Appendable 。
    这种方法的调用out.append(csq, start, end)时csq不是null ,则以完全相同的方式调用out.append(csq.subSequence(start, end))
    在这里插入图片描述
    文章来源于《Java核心技术》这本书
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值