流
概念:内存与存储设备之间传输数据的通道
按流向分类
输入流:将 存储设备 中的数据读入 内存
输出流:将 内存 中的内容写入到 存储设备
按单位分类
字节流:以字节为单位,可以读写所有数据
字符流:以字符为单位,只能读写文本数据
按功能分类
节点流:具有实际传输数据的读写功能(FileInputStream / FileOutputStream)
过滤流:在节点流的基础之上增强功能(BufferedInputStream / BufferedOutputStream)
字节流父类(抽象类)
InputStream:字节输入流
OutputStream:字节输出流
字节流
1.文件字节流
FileInputStream / FileOutputStream
2.字节缓冲流
提高IO效率,减少访问磁盘的次数
数据存储在缓冲区
BufferedInputStream / BufferedOutputStream
3.对象流
ObjectInputStream(反序列化) / ObjectOutputStream(序列化)
增强读写对象的功能
序列化:把内存的对象写入流中
注意事项:
- 1.序列化类需要实现Serializable接口
- 2.序列化类中对象属性要求实现Serializable接口
- 3.序列化版本号ID,保证序列化的类和反序列化的类是同一个类
- 4.使用transient修饰属性,则该属性不能序列化
- 5.静态属性不能序列化
-
- 6.序列化多个对象,可以借助集合实现
反序列化:从文件中读取对象
static属性定义在类文件中之后,在其他类中调用该属性,并更改静态属性的值,只是更改了内存中静态属性的值,类文件中定义的静态属性并没有受到影响,当你在其他类中再次调用静态属性时,还是初始值
字符流
1.文件字符流
FileWriter有缓冲区
2.字符缓冲流
打印流
PrintWriter有缓冲区
转换流
InputSreamReader:硬盘的字节输入流在内存转换为字符输入流
OutputStreamWriter:内存的字符输出流在硬盘转换为字节输出流
File类
FileFilter