课程目标
什么是流
流的分类
字节流
字节流的父类(抽象类)
字节流的子类
FileInputStream类
创建对象,读取文件(单个字节读取)
读取文件(一次读取多个字节)
read(数组): 从流中读取数组.length()个字符存入数组中
new String(buf,0,count): 创建一个新的数组,通过buf数组,从0开始,组成一个长度为count的新字符串
FileOutputStream类
使用字节流实现文件的复制
字节缓冲流
BufferedInputStream类
BufferedOutputStream类
对象流
new对象时需传入一个字节输入/输出流
ObjectOutputStream
- 写入对象时,被写入对象对应的类必须实现Serializable接口,表明这个类是可以被序列化的
- 实现序列化(写入)操作
ObjectInputStream
序列化和反序列化注意事项
serialVersionUID:序列化版本ID号
-
在被序列化的类中创建,后面的属性值随意写
-
为了保证序列化和反序列化的类是同一个类,若不设置序列化版本ID号,则有可能序列化的类ID为1L,反序列化后的类ID为2L,二者虽然名字相同,但在本质上并不是同一个类。
使用transient修饰属性,使属性不能被序列化
private transient int age;
静态属性不能序列化
序列化多个对象,通过集合实现
- 序列化多个对象:创建集合,将对象add进集合,然后将集合写入流
2.反序列化多个对象:
ArrrayList<Student> list = (ArrayList<Student>())ois.readObject();
System.out.print(list.toString());
字符编码
字符流
字符流的父类(抽象类)
文件字符流
FileReader
-
创建FileReader对象,单个字符读取
-
读取多个字符
FileWriter
使用字符流复制文件
- 字符流只能复制文本文件
字符缓冲流
BufferedReader
-
创建缓冲流,读取(第一种方式)、关闭文件
-
第二种读取方式:一行一行读取
BufferedWriter
-
创建对象,读取、关闭文件
打印流
PrintWriter
转换流
转换流的使用
InputStreamReader
OutputStreamWriter
File类
File类的使用
文件操作
-
分隔符,文件操作:创建文件
-
删除文件、获取文件信息
-
判断文件
文件夹操作
-
创建文件夹
-
删除文件夹,获取文件夹信息
-
判断文件夹
-
遍历文件夹