一、概述:
有关“流”的概念是一个抽象的概念,如果要往简单里理解就可以把它理解成水流这一类似事物。IO流里面就是一系列的数据,根据处理数据的方式不同,从总体上将IO流分成了两大类——字节流和字符流,其实说到底就是一种字节流,字符流是基于字节流的,字节流经过字符编码的过程就转换为了字符流。将字节流和字符流分别根据传输方向分类,就出现了IO流的四大抽象类InputStream,OutputStream,Reader,Writer。
其实可以将流理解为一个具有某种功能的载体,再根据JAVA语言中相关数据类型的不同,可以将四大抽象类向下继承实现各种具体功能。从而便衍生出具有不同功能的IO流相关类。
二、思维导图:
根据IO流中类的相关特点及其所属关系,画了如下图示,下边依据图示对其中的部分类做一下相关说明:
三、相关类功能说明:
1、转化流:概述中已经提到过,字符流和字节流其实本质上是一样的,只是做一个字符编码和解码的相互转换,IO流中也提供了具有该转换功能的类:InputStreamReader(字节流转为字符流)和OutputStreamWriter(字符流转为字节流),根据后缀可知其继承自字符流。
2、缓冲区对象:是在四大抽象类前边添加Buffered字头,就是缓冲区对象;缓冲区对象相当于在流中封装了一个数组,该数组具有暂存数据的功能,当数据达到一定量时将数据传送出去,从而提高了数据传输的效率。在需要提高效率的时候就要考虑用上缓冲区对象。
3、操作文件:说到操作文件的相关IO流类,就有必要提到IO流的File类,该类直接继承Object,它用来将文件或文件夹封装成对象,方便了对文件相关属性的访问,同时可以将该对象作为参数传递给操作文件等部分相关流,实现该文件的传输。
4、管道流:管道流具备的特有特点是可以实现流的对接,就是在程序中指定输出和输入的对应关系,一般要结合线程来使用。
5、其他IO流对象:其他的根据各自操作的对象的不同对其进行相关的分类,分别有:操作对象、基本的数据类型、字节和字符数组、字符串等。
四、运用思考:
有关IO流的使用,在需要用的时候可以考虑如下:1、明确源和目的,做为源需要用到输入流,做为目的,需要用到输出流。2、操作的数据类型,分清字符流和字节流的使用。3、明确具体的操作对象。4、需要提高效率,用缓冲区对象包装。
五、综述;
有关IO流的运用在实践应用中还是很常用的,明确事物概念和运用过程,在运用中学习;学习需要将知识系统化的看待,不能将所有的知识点孤立起来,系统化就是当我们看到一个(知识点)点时,在心中就生成了一个面(知识网);只有这样才能做到手中无剑,心中无剑,使开发能做到行云流水般流淌自如,正在努力做到这一点。