概览
在 java Api 中,可以从其中读取一个字节序列的对象称为输入流,而向其中写入一个自己序列的对象称为输出流。有四种I/O的种类需要考虑(文件,控制台,网络连接,内存),而且需要通过大量不同的方式与它通讯(顺序、随机访问、二进制、字符、按字等等)。
而在其中,java 抽象出I/O 层次结构基础 InputStream 和OutputSrtream 基于单字节的字符 。因为面向字节流而不便于处理Unicode形式存储信息(java是使用Unicode 存储),所以从抽象出 另一套专门用于处理Unicode 字符的 层次结构基础 Reader和Writer。继承它们的子类所有拥有的读写操作都是基于两字节的Unicode 码元。
下图是java I/O流 类的“家族”
是否感受到 java I/O流 家族的“庞大”? 哈哈,不用担心,因为java 是使用 装饰者模式对I/O家族进行设计。由于“庞大的家族”,而使得java I/O流的使用更加的灵活。相信不久你就体验到这种好处。