[关闭]
@zhuanxu 2017-11-05T03:21:21.000000Z 字数 742 阅读 620

Java IO

Java IO


流的概念和分类

流的本质是数据传输,通过流能封装不同特性的数据传输。

此处重点是数据传输的不同特性,下面就从不同的方面来讲解:

注意此处输入输出,实际是相对内存而言,以一张图形象说明:
Stream


类图

下面是一张IO继承图,可以看到分为了面向字节的和面向字符的两大类IO。
IO继承

Reader

在看一张Reader的继承图:
Reader
Java在处理字符上内部统一采用16-bit char表示一个字符,在输出的时候会根据外部字符编码进行转换,例如UTF8是采用1-4字节表示一个字符,重点FileReader

Writer

下面是Writer的继承图:
Writer
Writer从java接收16-bit char,输出到另外的地方,重点FileWriterPrintWriter

InputStream

数据以8bit读入,重点介绍DataInputStreamFileInputStream
InputStream

OutputStream

重点FileOutputStreamDataOutputStream
OutputStream

如何选择正确的IO对象

  1. 明确是输入,还是输出
    1.1 输入:InputStream 或 Reader
    1.2 输出:OutputSteam 或 Writer
  2. 明确是否读取文本数据
    2.1 纯文本:Reader 或 Writer
    2.1 字节流:InputStream 或 OutputSteam
  3. 确定源和目的设备类型
    3.1 硬盘 (外部文件) - File
    3.2 内存 - 数组
    3.3 网络数据 - Socket 流
  4. 明确是否需要额外功能
    4.1 例如是否需要缓冲BufferedOutputStream
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注