字节流和字符流各自的功能及作用如下:
IO字节流
输入流/输出流
文件输入流/文件输出流
缓冲输入流/缓冲输出流
对象输入流/对象输出流
流分类
InputStream/OutputStream
FilelnputStream/fileOutputStream
BufferedlnputStream/BufferedOutputStream
ObjectlnputStream/ObiectOutputStream
类型
超类、抽象类
节点流(低级流)
处理流(高级流)
处理流(高级流)
功能
他们是所有输入流和输出流的超类,并且他们是抽象类自身是不能被实例化的,但是规定了所有流都必须具备的读写方法。
字节文件的读写操作《基础)
缓冲流内部有一个字节数组作为缓冲区,默认8K.缓冲流会将读写数据统一转换为块读写操作,因此可以提高数据的读写效率 flush方法功能是强制将缓冲流的缓存区中已经缓存的数据写出)
作用是方便读写iava对象,他们可以负责将对象与字节进行相互转换。写出的对象所属的类必须实现可序列化接口。 (对象序列化和数据持久化)
IO字符流
输入流/输出流
转换输入流/转换输出流
缓冲输入流/缓冲输出流
缓冲字符输出流(自动刷新)
流分类
Reader/Writer
InputStreamReader/OutputStreamWirter
BufferedReader/BufferedWriter
PrintWriter
类型
抽象类超类
处理流(高级流)
处理流(高级流)
处理流(高级流)
功能
读写数据是以字符为单位读写的,因此字符流天生是具有编解码能力,只适合读写文本数据
其他的字符流在流连接中使用时有一个要求,只能连接在其他字符流上,但是我们常用的低级流通常都是字节流,这会导致不能串联在一而转换流的意义就在这里,它们是可以连接在字节流上的字符流,而其他的字符流又可以连接在他们上面,因此起到“转换器”的作用。
缓冲字符流读写文本数据效率高,并且可以按行读写文本数据。
具有自动行刷新新功能的缓冲字符输出流(内部连接了BufferedWriter作为缓冲功能)