IO
IO是指Input/Output,即输入和输出。以内存为中心:
Input指从外部读入数据到内存
例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。
Output指把数据从内存输出到外部
例如,把数据从内存写入到文件,把数据从内存输出到网络等。
之所以把数据读到内存才处理这些数据是因为代码是在内存中运行的,数据也必须读到内存,最终的表示方式无非是byte数组,字符串等,都必须存放在内存里。
从Java代码来看,输入实际上就是从外部,例如,硬盘上的某个文件,把内容读到内存,并且以Java提供的某种数据类型表示,例如,byte[],String,这样,后续代码才能处理这些数据。
因为内存有“易失性”的特点,所以必须把处理后的数据以某种方式输出,例如,写入到文件。Output实际上就是把Java表示的数据格式,例如,byte[],String等输出到某个地方。
IO流是一种顺序读写数据的模式,它的特点是单向流动。数据类似自来水一样在水管中流动,所以我们把它称为IO流。
InputStream / OutputStream
IO流以byte(字节)为最小单位,因此也称为字节流。例如,我们要从磁盘读入一个文件,包含6个字节,就相当于读入了6个字节的数据。这6个字节是按顺序读入的,所以是输入字节流。
反过来,我们把6个字节从内存写入磁盘文件,就是输出字节流。
在Java中,InputStream代表输入字节流,OuputStream代表输出字节流,这是最基本的两种
本文主要介绍了Java中的IO流,包括输入输出的概念、字节流(InputStream/OutputStream)和字符流(Reader/Writer),以及同步和异步IO的区别。字节流以字节为单位进行读写,而字符流则处理字符数据,对于文本数据,使用字符流更方便。同步IO在等待数据返回后执行后续代码,虽然编写简单但效率较低,异步IO则允许在等待数据时执行其他任务,提高CPU利用率。
订阅专栏 解锁全文
247

被折叠的 条评论
为什么被折叠?



