I/O流入门

I/O

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


image.png

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

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

InputStream:


image.png

OutputStream:


image.png

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

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


image.png

Reader:


image.png

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


image.png

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容