Java基础——IO类库

纵览

Java的I/O操作类在包java.io下,大概有将近80个类,这些类大概可以分成如下四组。
基于字节操作的I/O接口:OutputStream和InputStream。
基于字符操作的I/O接口:Writer和Reader。
基于磁盘操作的I/O接口:File。
基于网络操作的I/O接口:Socket。

基于字节

Java基础——IO类库_第1张图片
Java基础——IO类库_第2张图片
这里说明两点:一是操作数据的方式是可以组合使用的;二是流最终写到什么地方必须要指定,要么是写到磁盘,要么是写到网络中,其实从上面的类图可以发现,写网络实际上也是写文件,只不过写网络还有一步需要处理,就是让底层操作系统再将数据传送到其他地方而不是本地磁盘。

基于字符

不管是磁盘还是网络传输,最小的存储单元都是字节而不是字符,所以I/O操作的都是字节而不是字符,但是为什么有操作字符的I/O接口呢?这是因为我们的程序中通常操作的数据都是字符形式的,为了操作方便当然要提供一个直接写字符的I/O接口,如此而已。我们知道字符到字节必须要经过编码转换,而这个编码又非常耗时,而且还会经常出现乱码问题,所以I/O的编码问题经常是让人头疼的问题。
Java基础——IO类库_第3张图片
Java基础——IO类库_第4张图片
不管是Writer类还是Reader类,它们都只定义了读取或写入的数据字符的方式,也就是怎么写或读,但是并没有规定数据要写到哪去,写到哪去就是我们后面要讨论的基于磁盘和网络的工作机制。

字节与字符的转化

Java基础——IO类库_第5张图片
Java基础——IO类库_第6张图片

你可能感兴趣的:(Java)