I/O流的作用
I 就是输入流(读数据),O就是输出流(写数据)。当我们需要从硬盘,内存或者网络中读写数据时,数据的传输量可能很大,而我们的内存和带宽有限,无法一次性获取大数据量时,就可以通过IO流来解决问题。而流,就像河流中的水一样,缓缓的流入大海。(PS:IO流让我们在各种环境下更好的读写数据。)
I/O流的分类
从传输数据类型分为:字节流和字符流
从传输方向分为:输入流和输出流
从IO操作对象划分:
如何更好的使用IO流
我们在使用IO流的时候,我们要明确,是读数据还是写数据,传输的数据时字节还是字符,数据所在的设备等问题,决定我们应该用什么IO流,具体情况具体分析,举个例子我们来了解一下。
序列化,就是将Java对象以字节流的方式存入硬盘中,分析一下,操作的是对象,字节流,写数据,我们就可判断用的是ObjectOutputStream,则反序列化用的ObjectInputStream读数据。
当我们需要把数据暂存内存时,可以用ByteArrayOutputStream,因为ByteArrayOutputStream创建实例对象的时候,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据,在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去。
当我们要得到某个文件的内容的时候,我们就可以用FileInputStream来得到文件中的内容
从以上三个例子,其实想说不同场景下,需要用到不同的IO流,我们现在只是简单的了解了一下Java的IO流,对于后端的开发同学来说,熟练的掌握IO流是极其重要的,我们可以通过网络,文件,内存对数据进行读写操作,后面我们继续深入的分析IO流的源码,到时候发出来供大家参考。
领取专属 10元无门槛券
私享最新 技术干货