流
分类:
按方向分:输入流 输出流
按操作单位分:字符流 字节流
组合:字符输入流 字符输出流 字节输入流 字节输出流
字符流只能操作文本相关,字节流可以操作图片音乐等
字节输入流
抽象父级:InputStream 是一个抽象类 不能被实例化
普通子级(目前接触到的):
FileInputStream--操作文件的字节输入流--构造函数参数:File file/String pathname
BufferedInputStream--高效的字节输入流--构造函数参数:InputStream 因为InputStream是抽象类,所以在这里 创建他的子类FileInputStream对象
BufferedInputStream in = new BufferedInputStream(new FileInputStream("G:\\ready\\1.txt"));
继承关系:
字节输出流
抽象父级:OutputStream 是一个抽象类 不能被实例化
普通子级(目前接触到的):
FileOutputStream--操作文件的字节输出流--构造函数参数:File file/String pathname----有一个默认boolean类型的append参数,默认false,覆盖输出;设为true,追加输出
BufferedOutputStream--高效的字节输出流--构造函数参数:OutputStream 因为OutputStream是一个抽象类 所以在这里创建他的子类对象FileOutputStream
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("G:\\ready\\1.txt", true));
继承关系:
字符输入流
抽象父级:Reader 抽象类
普通子级(目前接触到的):
FileReader--操作文件的字符输入流--构造函数参数:File file/String pathname
BufferedReader--高效的字符输入流--构造函数参数:Reader
BufferedReader in = new BufferedReader(new FileReader("G:\\ready\\1.txt"));
继承关系:
字符输出流
抽象父级:Writer 抽象类
普通子级(目前接触到的):
FileWriter--操作文件的字符输出流--构造函数参数:File file/String pathname;有一个默认boolean类型的参数append,默认false 覆盖输出;设为true,追加输出
BufferedWriter--高效的字符输出流--构造函数参数:Writer
BufferedWriter out = new BufferedWriter(new FileWriter("G:\\ready\\1.txt", true));
继承关系:
序列化与反序列化
通常一次序列化对应一次反序列化,序列化时会生成类的序列号,当类完成序列化后,如果类被修改,那么会改变类的序列号,反序列化会报错InvalidClassException
一个类如果想要序列化,要实现Serializable接口,否则会报错NoSerializableException
Serializable接口源码(空接口)
序列化
ObjectOutStream
反序列化
ObjectInputStream