《Java编程十五讲》第九讲:IO和NIO

207 阅读2分钟

第九讲 IO和NIO
一个完备的语言可以自成体系,并不需要与外部文件打交道,不过这种说法只是理论上的,实际上任何一个语言都需要与外部文件进行数据交换。一个不能与外部进行任何交换的系统似乎用处不大,一个封闭的单细胞怕是生存不下来,广而言之,“闭关锁国”真是要不得啊。

Java一生下来就有了对I/O的支持,后来在Java 1.4版本中增加了一套平行的API,即NIO,这些新的API都是为了提高性能而设计的。在Java 7之后又有了NIO2,改进了File操作,对所有文件系统提供了统一的支持。

在具体看程序之前,我们先搞清楚一下I/O的概念,就是计算机与外部设备的输入/输出,从计算机架构上来讲,任何涉及计算机CPU和内存与其他设备间的数据转移的过程就是IO。包括数据流和文件系统,如串行设备字节流字符流文件和网络,这些输入/输出都统一在IO API中。对I/O的支持,就是从某个数据源获取数据,再写到某个数据目的地。运行方式如图9-1所示。

图片 5

图9-1 IO的运行方式

我们先讲IO接口。Java主要通过java.io包来支持I/O操作,能帮助用户处理几乎所有的计算机的输入/输出。我这里用了“几乎”两个字,是因为Java IO API这个包本身并不完备,与网络socket、internet和GUI有关的操作没有包括进来。不过在概念上我们可以把它们视为一起的,但是后面的例子我还是重点关注文件的读写,网络的IO要单独用一本书才可以,现在不讲。

文件I/O接口大概可以分成以下几种。

字节操作接口:InputStream 和 OutputStream。</