Java:如何使用ObjectOutputStream向文件添加静态文本

Java:如何使用ObjectOutputStream向文件添加静态文本,java,Java,我正在用Java开发一个小应用程序。在某些时候,我需要将自定义类的对象保存到文本文件中,为此,我在自定义类中重写toString()方法,然后使用ObjectOutputStream类将自定义类的对象保存到文本文件中。现在一切正常,即文本文件包含预期的文本。下面三行包含了这方面的主要代码 ObjectOutputStream outputStream = null; outputStream = new ObjectOutputStream(new FileOutputStream(filena

我正在用Java开发一个小应用程序。在某些时候,我需要将自定义类的对象保存到文本文件中,为此,我在自定义类中重写
toString()
方法,然后使用
ObjectOutputStream
类将自定义类的对象保存到文本文件中。现在一切正常,即文本文件包含预期的文本。下面三行包含了这方面的主要代码

ObjectOutputStream outputStream = null;
outputStream = new ObjectOutputStream(new FileOutputStream(filename));
outputStream.writeObject(person);//person is the instance of my custom class
现在,如何将一些静态数据与对象数据一起添加到文件中

outputStream = new ObjectOutputStream(new FileOutputStream(filename));
outputStream.WhatFunctoinToUse("some static text");//What function i use to add static text??
outputStream.writeObject(person);//person is the instance of my custom class

希望您认识到,通过使用ObjectOutputStream并向其写入
person
,您实际上是在序列化
person
对象。

希望您认识到,通过使用ObjectOutputStream并向其写入
person
,本质上,您是在序列化
person
对象。

简单回答:您没有

ObjectOutputStream
不打算以这种方式使用。它以API指定的格式输出可序列化的
对象。这并不总是一个好主意,也就是说,在将来的版本中很容易破坏兼容性

虽然输出的格式看起来可读,但它包含许多不可打印的字符,添加一些静态文本可能会破坏序列化

您需要的是:

a) 一个清晰的文本序列化,比如JSON或XML(试试看,它真的很简单)

b) 序列化对象之外的文本文件


您不应该尝试扩展
ObjectOutputStream的功能,除非您有很好的理由,而且您似乎没有这样做。

简单回答:您没有

ObjectOutputStream
不打算以这种方式使用。它以API指定的格式输出可序列化的
对象。这并不总是一个好主意,也就是说,在将来的版本中很容易破坏兼容性

虽然输出的格式看起来可读,但它包含许多不可打印的字符,添加一些静态文本可能会破坏序列化

您需要的是:

a) 一个清晰的文本序列化,比如JSON或XML(试试看,它真的很简单)

b) 序列化对象之外的文本文件


您不应该尝试扩展
ObjectOutputStream
的功能,除非您有很好的理由,而且您似乎没有这样做。

如果您想附加一个原语类型值以使用对象展平,将您的
ObjectOutputStream
传递到
PrintStream
以允许您附加一个新行,该新行将根据需要有效地保留
静态

阅读和写作见下文

    //Writting
    ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("person.out"));
    outputStream.writeObject(person);
    PrintStream pst = new PrintStream(outputStream);
    pst.append("Some static Value");

    outputStream.flush();
    outputStream.close();
    pst.close();

    // Reading
    ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.out"));
    Perrson person=(Person) in.readObject();
    String staticText =in.readLine(); 
    in.close();

如果要附加要用对象展平的基元类型值,请将
ObjectOutputStream
传递到
PrintStream
以允许附加新行,该新行将根据需要保留
静态

阅读和写作见下文

    //Writting
    ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("person.out"));
    outputStream.writeObject(person);
    PrintStream pst = new PrintStream(outputStream);
    pst.append("Some static Value");

    outputStream.flush();
    outputStream.close();
    pst.close();

    // Reading
    ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.out"));
    Perrson person=(Person) in.readObject();
    String staticText =in.readLine(); 
    in.close();