一、今日学习
1.对象序列化和反序列化
(1)序列化
对象序列化是将一个在内存中保存的对象变成一个二进制的数据流进行传输,但并不是所有类的对象都可以进行序列化操作。如果一个对象需要被序列化,则对象所在的类必须实现Serializable接口。但此接口中没有任何的方法定义,是作为标识接口出现的。
示例:将实体类标注为可以序列化
示例:使用ObjectOutputStream将对象写到文件中去
(2)反序列化
反序列化是将文件中读取对象的过程,使用ObjectInputStream可以实现反序列化。
示例:反序列化
(3)transient关键字
transient关键字可以使对象的某个属性不被序列化
public class Person implements Serializable{ private transient String name; private int age; ... }
(4)序列化一组对象
要想序列化多个对象,可以使用数组来解决
示例:序列化多个对象
2.打印流
Java提供打印流PrintStream,遇到打印文件时,首先考虑PrintStream
3.RandomAccessFile随机访问文件
(1)RandomAccessFile可以随机读写文件,随机读写文件即可以在任意访问文件的位置。
(2)RandomAccessFile类包含一个记录指针,用于标识当前流的读写位置,这个位置可以向前移动,也可以向后移动。RandomAccessFile包含两个方法来操作文件记录操作:
-
long getFilePoint():记录文件指针的当前位置
-
void seek(long pos):将文件记录指针定位到pos位置
(3)RandomAccessFile类的构造函数:
public RandomAccessFile(File file,String mode) throws FileNotFoundException public RandomAccessFile(String name,String mode) throws FileNotFoundException
(4)在Random Access File中读写文件有四种模式:
(5)示例:使用RandomAccessFile随机读写文件
二、遇到问题
不太理解序列化的作用与使用
三、明日学习
第十二章的综合实例