Mik*_*ren 4 java serialization object
假设你有一些AppendObjectOutputStream类(它是一个ObjectOutputStream!),它会覆盖writeStreamHeader(),如下所示:
@Override
public void writeStreamHeader() throws IOException
{
reset();
}
Run Code Online (Sandbox Code Playgroud)
现在,让我们假设您计划将多个对象保存到文件中; 每次程序运行时都有一个对象.即使在第一次运行中,您是否会使用AppendObjectOutputStream()?
您必须首次使用常规ObjectOutputStream编写流标头,否则在使用ObjectInputStream打开文件时将获得java.io.StreamCorruptedException.
public class Test1 implements Serializable {
public static void main(String[] args) throws Exception {
ObjectOutputStream os1 = new ObjectOutputStream(new FileOutputStream("test"));
os1.writeObject(new Test1());
os1.close();
ObjectOutputStream os2 = new ObjectOutputStream(new FileOutputStream("test", true)) {
protected void writeStreamHeader() throws IOException {
reset();
}
};
os2.writeObject(new Test1());
os2.close();
ObjectInputStream is = new ObjectInputStream(new FileInputStream("test"));
System.out.println(is.readObject());
System.out.println(is.readObject());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13169 次 |
| 最近记录: |