以程序为中心
1、按照流向:输入流、输出流
2、按操作数据:
字节流:二进制,可以是任何类型的文件
字符流:必须是纯文本类型
3、按照功能
节点流:包裹源头
处理流:增强功能
字节流与字符流
1、字节流
输入流:InputStream
FileInputStream
输出流:OutputStream
FileOutputStream
2、字符流
输入流:Reader
FileReader
输出流;Writer
FileWriter
3、缓冲流
字节缓冲流:BufferdInputStream
BufferdOutputStream
字符缓冲流:BufferdReader
BufferdWriter
以程序为中心,文件读写流程:
1、与文件建立联系,创建文件
2、选择合适的流:纯文本文件建议使用BufferdReader、BufferdWriter。其他类型文件使用BufferdInputStream、BufferdOutputStream
3、读取流到字节数组中。
4、输出字节数组中的数据。
5、关闭输入流、输出流。
乱码造成原因
1、编解码不一致
2、字节缺少,长度丢失
解码:字节 ====> 字符(由FileInputStream创建InputStreamReader可以设置解码字符集)
编码:字符 ====> 字节
对象序列化与反序列化
序列化:输出流(ObjectOutputStream),将程序中对象写入到文件。
反序列化:输入流(ObjectInputStream),从文件中读取对象到程序中。