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