I/O流

以程序为中心
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),从文件中读取对象到程序中。

—转载请注明出处
原文地址:https://www.cnblogs.com/landiss/p/14206864.html