io流的分类
- 根据流的数据对象来分:
高端流:所有的内存中的流都是高端流(InputStreamReader)
低端流:所有的外界设备中的流都是低端流(InputStream,OutputStream)
如何分区:所有的流对象的后缀中包含Reader或者Writer的都是高端流,反之为低端流,也有例外(PrintStream就是高端流)
- 根据数据的流向来分:
输出流:用来写数据的,由程序(内存)—>外界设备
输入流:用来读数据的,由外界设备—>程序(内存)
如何区分:一般来说输入流带有Input,输出流带有Output
- 根据流数据的格式来分:
字节流:处理声音或者图片等二进制的数据的流,比如InputStream
字符流:处理文本数据(如txt文件)的流,如InputStreamReader
如何区分:可用高低端流来区分,所有的低端流都是字节流,所有的高端流都是字符流
- 根据流对象的包装过程来分:
原始流:在实例化流的对象的过程中,不需要传入另外一个流作为自己构造方法的参数的流,称之为原始流
包装流(处理流):在实例化流的对象的过程中,需要传入另外一个流作为自己构造方法的参数的流,称之为包装流
如何区分:所有的低端流都是原始流,所有的高端流都是包装流
io流的应用
- 将一个文件的内容写入另一个文件中,需要两个参数,一个源文件地址,一个目标文件地址
- 读取二进制文件
- io流中图片的复制(建议第4种方案)同时这四种方法也适用于音频、视频的复制