1.1.2 完整的流家族

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

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

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

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

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

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接口只有一个方法:

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

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

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

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

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

点赞 0

java流家族_1.1.2 完整的流家族相关推荐

  1. Java字节流和字符流,是时候总结一下IO流了

    Java字节流和字符流,是时候总结一下IO流了 从接收输入值说起 字节流读取 字符流读取 Scanner 读取 什么是 IO 流 字节流和字符流 字节流 字节输入流 字节输出流 缓冲流的原理 字符流 ...

  2. Java学习总结:42(字节流和字符流)

    字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容.如果要进行文件内容的操作,就必须依靠流的概念来完成.流在实际中分为输入流和输出流两种,输入 ...

  3. java中的常用的文件流_Java 基础(四)| IO 流之使用文件流的正确姿势

    image.png 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既 ...

  4. java流类图结构_java I/O 流总结

    一.java 流操作有关的类和接口: 类                                                                          说明 Fil ...

  5. java io流读写文件换行_java基础io流——OutputStream和InputStream的故事(温故知新)...

    io流概述: IO流用来处理设备之间的数据传输,上传文件和下载文件,Java对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中. IO流分类 按照数据流向 输入流 读入数据 输出流 写出 ...

  6. java io流 教程_Java基础教程:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:指的是从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列 ...

  7. 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)

    菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...

  8. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  9. 【Java基础】Java IO编程:输入输出流、内存流、打印流、缓冲流BufferedReader、扫描流Scanner、序列化与反序列化

    文章目录 第11章.Java IO编程 11.1 文件操作类:File 11.2 字节流与字符流 字节输出流:OutputStream OutputStream类 FileOutputStream类 ...

  10. java中流的作用是什么意思_流的概念和作用

    学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各 ...

最新文章

  1. 介绍几款浏览器兼容性测试工具
  2. nginx服务器的负载均衡和动静分离(未完)
  3. 真实!拖垮中小技术团队的 11 宗罪
  4. 如何利用百度API地图进行定位,非gps 定位
  5. python3 异步 asyncio 动态添加任务
  6. BeanUtils解决日期问题
  7. 计算机网络信息安全的含义,计算机网络信息安全内涵及其重要性
  8. linux 微信 开源,Makefile · 李光春/微信开发者工具 Linux版 - Gitee.com
  9. 《工具癖》Mac与Windows获取文件绝对路径的快捷键
  10. linux检查swap配置,Linux环境下swap配置方法
  11. 人工智能python小程序_Python:一个可以套路别人的python小程序
  12. make时候说找不到makefile_优秀自律的句子:找不到理由继续的时候,就找个理由重头来过吧...
  13. 怎么把竖列中的数相加python_使用python将另一列的列和总和内容分组
  14. 吴恩达深度学习——机器学习策略(一)
  15. JavaScript算术运算中前加加与后加加
  16. 进华为你必须了解的——华为精神
  17. summer 's wonderful so why not SMILE
  18. 沁春教你怎么在家制作拿铁咖啡!
  19. office安装教程
  20. CocosCreator微信小游戏之排行榜

热门文章

  1. Git pull(拉取),push(上传)命令整理
  2. pscp使用详解 Windows与Linux文件互传工具
  3. Ubuntu16.04下完美切换Python版本
  4. 关于目前深度学习技术的相关思考----个人理解笔记
  5. 导师说,再招女生,他就是孙子
  6. python自动搜索最佳超参数之GridSearchCV函数
  7. 使用python对mysql主从进行监控,并调用钉钉发送报警信息
  8. python单例模式和装饰器
  9. redis安装及使用
  10. cnblogs用户体验评价