先来说一下Java的转换流:
InputStreamReader: 将输入的字节流转变为字符流
OutputStreamWriter: 将输出的字符流转变为字节流
过程例如:
- 写入数据-->内存中字符数据-->字符流-->OutputStreamWriter-->字节流-->文件保存(或网络传输)
- 读取数据<--内存中的字符数据<--字符流<--InputStreamReader<--字节流<--文件保存(或网络传输)
不管如何操作,最终都是以字节的形式保存在文件中或进行网络传输。
Java装饰流:
按照流是否直接连接实际数据源,例如文件,网络,字节数组等,可以将流分为实体流和装饰流两大类。
- 实体流指直接连接数据源的流类,如FileInputStream/FileOutputStream和FileReader/FileWriter,该类流直接实现数据源转换为流对象,实体流类均可单独使用。
- 装饰流不直接连接数据源,而是以其它流对象(实体流对象或装饰流对象)为基础建立的流类,该类流实现了将实体流中的数据进行转换,增强了流的读写能力,常用的有DataInputStream/DataOutputStream和BufferedReader/BufferedWriter等,装饰流不可以单独使用,必须配合实体流或装饰流使用。
- 由于装饰流都是在已有流对象基础上进行创建的,所以这种创建流的方式被称作“流的嵌套”。装饰流不改变原来实体流对象中的数据内容,只是进行了一些功能的增强。
网友评论