将对象附加到序列化文件
假设你有一些AppendObjectOutputStream类(它是一个ObjectOutputStream!),它会覆盖writeStreamHeader(),如下所示:
@Override public void writeStreamHeader() throws IOException { reset(); }
现在,让我们假设您计划将多个对象保存到文件中; 每次程序运行时都有一个对象。 即使在第一次运行中,您是否会使用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());
- 你如何使用python在jar文件中调用python脚本?
- 如何使用Java EE 7和Glassfish 4在IntelliJ IDEA Community Edition中创建Java Servlet应用程序?
- PowerMock,模拟静态方法,然后在所有其他静态上调用真实方法
- 如何在负载测试期间测量CPU和内存
- 在IIS中运行java Web应用程序
- IntelliJ IDEA:Tomcat 8.5.13和9.0.0.M19 – 工件部署期间出错。 有关详细信息,请参阅服
- Java 8时区转换
- 从JdbcTemplate中的ResultSet获取DateTime
- 当isNameSpaceAware和isValidating为“true”时,XPath为“Node”返回null