第1章 流 与 文 件
▲ 流 ▲ 对象流与序列化
▲ 文本输入与输出 ▲ 使用文件
▲ 读入和写出二进制数据 ▲ 内存映射文件
▲ ZIP文档 ▲ 正则表达式
本章将介绍Java中用于输入和输出的各种应用编程接口(Application Programming Interface,API)。你将要学习如何访问文件与目录,以及如何以二进制格式和文本格式来读写数据。本章还要向你展示对象序列化机制,它可以使存储对象像存储文本和数值数据一样容易。然后,我们将介绍在Java SE 1.4中引入的“新I/O”包java.nio所带来的种种改进,以及Java 7的“新新I/O”改进。*后,本章将讨论正则表达式,尽管这部分内容实际上与流和文件并不相关,但是我们确实也找不到更合适的地方来处理这个话题。很明显,Java设计团队在这个问题的处理上和我们一样,因为正则表达式API的规格说明隶属于“新I/O”特性的规格说明。
1.1 流
在Java API中,可以从其中读入一个字节序列的对象称做输入流,而可以向其中写入一个字节序列的对象称做输出流。这些字节序列的来源地和目的地可以是文件,而且通常都是文件,但是也可以是网络连接,甚至是内存块。抽象类InputStream和OutputStream构成了输入/输出(I/O)类层次结构的基础。
因为面向字节的流不便于处理以Unicode形式存储的信息(回忆一下,Unicode中每个字符都使用了多个字节来表示),所以从抽象类Reader和Writer中继承出来了一个专门用于处理Unicode字符的单独的类层次结构。这些类拥有的读入和写出操作都是基于两字节的Unicode码元的,而不是基于单字节的字符。