SequenceInputStream表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
将对象写入文件的过程叫做对象的序列化
将对象从文件中读出的过程叫做反序列化。
对象的输入输出流注意细节:
ObjectInputStream:对象输入流
ObjectOutputStream:对象输出流
1.如果对象需要被写到文件上,那么对象所属的类必须实现Serializable接口,该接口没有方法,是一个标识接口。
2.对象的反序列化创建对象的时候并不会调用构造方法。
3.serivalVersionUID是用于记录class文件的版本信息的,这个数字是由类名,成员,包名,工程名算出来的
4.使用ObjectInputStream反序列化的时候,先读取文件的serivalVersionUID,然后与本地的serivalVersionUID做比较,如果不一致,则反序列化失败。
5.如果在序列化与反序列化的时候会修改类的成员,那么在一个类的开始最好就指定一个serivalVersionUID,一经指定,那么在序列化与反序列化的过程中jvm都不会再指定serivalVersionUID了。
6.如果一个对象的某个成员的值不想被写到硬盘上去,那么可以使用transient关键字。
7.如果一个类引用了另一个类,那么被引用的类也需要实现Serializable接口。