I/O流入门

I/O

I/O是任何编程语言都无法回避的问题,I/O是人机交互的核心问题,因为I/O是机器获取和交换信息的主要渠道。
Java的I/O操作类在包java.io下,大概有80个类,按照传输数据的数据格式和传输数据的方式可以分为两大类,如下图:


I/O流入门_第1张图片
image.png

虽然,socket不在java.io包下,但是个人认为I/O的核心问题要么是数据格式影响I/O操作,要么是传输方式影响I/O操作,也就是将什么样的数据写到什么地方的问题。

A、基于字节的I/O操作接口:

InputStream:


I/O流入门_第2张图片
image.png

OutputStream:


I/O流入门_第3张图片
image.png

注意:1、操作数据的方式可以组合使用,例如:
OutputStream out = new BufferedOutputStream(new ObjectOutputStream(new FileOutputStream("fileName")));
2、必须要指定最终写到什么地方,要么写到磁盘,要么写到网络中。

B、基于字符的I/O操作接口:
无论是网络传输还是磁盘传输,最小的存储单元都是字节,而不是字符,座椅I/O操作的都是字节而不是字符,使用字符是因为在我们的程序中通常操作的数据都是字符形成的,为了方便当然要提供一个直接写字符的I/O接口。
Writer:


I/O流入门_第4张图片
image.png

Reader:


I/O流入门_第5张图片
image.png

C、字节与字符的转化接口:


I/O流入门_第6张图片
image.png

InputStreamReader类是从字节到字符的转化桥梁,从InputStream到Reader的过程要指定编码字符集,否则将采用操作系统默认的字符集,很可能会出现乱码问题,StreamDecoder正式完成从字节到字符的解码的实现类。

D、读取文件:
OutputStream的转换与InputStream类似,此处不写了。

你可能感兴趣的:(I/O流入门)