Java IO基础知识

Posted by BY KiloMeter on August 11, 2020

分类

输入输出流

根据数据流向的不同,IO分为两大类,一类是输入流,一类是输出流。

输入流:只能从中读取数据,而不能写入数据。输出流:只能向其中写入数据,而不能读取数据。

字符字节流

根据处理的数据单元的不同,可以分为两类,一类是字符流,一类是字节流。字节流和字符流的用法几乎一样,区别在于字符流就是专门用来处理字符的。字符流的本质其实是由于数据编码的不同,字节字符流在处理数据时,查询了相应的编码表。因此,只要是处理纯文本文件,推荐使用字符流,除此之外,如图片、音频等都是用字节流。

节点流和处理流

根据流的角色不同,可以分为节点流和处理流。对已存在的特定IO设备(如网络、磁盘)进行数据读/写的流,成为节点流,也被称为低级流。处理流是对已存在的流进行封装,通过封装后的流来实现数据的读/写,处理流因此也被称为高级流。

//节点流,直接传入的参数是IO设备
FileInputStream fis = new FileInputStream("test.txt");
//处理流,直接传入的参数是流对象
BufferedInputStream bis = new BufferedInputStream(fis);

使用处理流的好处就是,程序并不会直接连接到数据源,而是通过节点流间接地连接上数据源,通过处理流,程序可以使用完全一样的代码处理不同的数据源。

JavaIO流的四大基类

Java根据数据的流向(输入输出)以及处理的数据单元(字符字节),将IO类分为四个大类,分别是InputStream(字节输入),Reader(字符输入),OutputStream(字节输出),Writer(字符输出)。下图是以这四个基类为基础,形成的整个IO框架。