《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.1.2 完整的流家族

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第2章 ,第2.1.2节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1.2 完整的流家族

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

让我们把输入/输出流家族中的成员按照它们的使用方法来进行划分,这样就形成了处理字节和字符的两个单独的层次结构。正如所见,InputStream和OutputStream类可以读写单个字节或字节数组,这些类构成了图2-1所示的层次结构的基础。要想读写字符串和数字,就需要功能更强大的子类,例如,DataInputStream和DataOutputStream可以以二进制格式读写所有的基本Java类型。最后,还包含了多个很有用的输入/输出流,例如,ZipInputStream和ZipOutputStream可以以常见的ZIP压缩格式读写文件。
另一方面,对于Unicode文本,可以使用抽象类Reader和Writer的子类(请参见图2-2)。Reader和Writer类的基本方法与InputStream和OutputStream中的方法类似。
image

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

image

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

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

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

image

而OutputStream和Writer还实现了Flushable接口。
Readable接口只有一个方法:
image

CharBuffer类拥有按顺序和随机地进行读写访问的方法,它表示一个内存中的缓冲区或者一个内存映像的文件(请参见2.6.2节以了解细节)。
Appendable接口有两个用于添加单个字符和字符序列的方法:
image

CharSequence接口描述了一个char值序列的基本属性,String、CharBuffer、StringBuilder和StringBuffer都实现了它。
在流类的家族中,只有Writer实现了Appendable。
image

相关文章
|
3月前
|
Java 数据挖掘 开发者
Java网络编程进阶:Socket通信的高级特性与应用
【6月更文挑战第21天】Java Socket通信是分布式应用的基础,涉及高级特性如多路复用(Selector)和零拷贝,提升效率与响应速度。结合NIO和AIO,适用于高并发场景如游戏服务器和实时数据分析。示例展示了基于NIO的多路复用服务器实现。随着技术发展,WebSockets、HTTP/2、QUIC等新协议正变革网络通信,掌握Socket高级特性为应对未来挑战准备。
30 1
|
4月前
|
XML Java API
你必须掌握的 21 个 Java 核心技术!,千峰Java
你必须掌握的 21 个 Java 核心技术!,千峰Java
|
7天前
|
缓存 Java 调度
【Java 并发秘籍】线程池大作战:揭秘 JDK 中的线程池家族!
【8月更文挑战第24天】Java的并发库提供多种线程池以应对不同的多线程编程需求。本文通过实例介绍了四种主要线程池:固定大小线程池、可缓存线程池、单一线程线程池及定时任务线程池。固定大小线程池通过预设线程数管理任务队列;可缓存线程池能根据需要动态调整线程数量;单一线程线程池确保任务顺序执行;定时任务线程池支持周期性或延时任务调度。了解并正确选用这些线程池有助于提高程序效率和资源利用率。
21 2
|
4月前
|
安全 Java API
java的高级特性
Java的关键特性包括:跨平台能力,依赖JVM实现“一次编写,到处运行”;面向对象编程,通过类和对象抽象提高代码复用和维护性;内置安全机制如内存管理和异常处理;丰富的标准类库提供各种API;以及支持多线程,充分利用CPU资源。学习路线上,从基础的面向对象和类库使用开始,逐渐深入到多线程和高级特性。
31 1
|
3月前
|
存储 Java 编译器
Java核心技术第八章-泛型
Java核心技术第八章-泛型
|
3月前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【6月更文挑战第18天】在Java中,Map的两大代表HashMap和TreeMap提供高效键值对操作。HashMap允许设定初始容量和加载因子以优化性能,非线程安全,可借助synchronized或ConcurrentHashMap处理多线程。遍历可通过entrySet()、keySet()和values()。而TreeMap依据键进行排序,支持自然排序和自定义Comparator,提供范围查询、获取首尾键的功能,适用于需有序遍历的场景。理解和利用这些特性能增强代码功能和效率。
35 0
|
4月前
|
Java API
Java从入门到精通:2.1.5深入学习Java核心技术之文件操作
Java从入门到精通:2.1.5深入学习Java核心技术之文件操作
|
4月前
|
Java API
Java从入门到精通:2.1.4深入学习Java核心技术——Java的输入输出流
Java从入门到精通:2.1.4深入学习Java核心技术——Java的输入输出流
|
4月前
|
IDE Java 程序员
Java程序员必备的21个核心技术,你都掌握了哪些?,深入浅出Java开发
Java程序员必备的21个核心技术,你都掌握了哪些?,深入浅出Java开发
|
4月前
|
消息中间件 存储 Java
Java从入门到精通:3.1.1掌握EJB、JPA、JMS等Java EE核心技术
Java从入门到精通:3.1.1掌握EJB、JPA、JMS等Java EE核心技术
下一篇
云函数