2011-08-15 114 views
0

我正在開發Java中的一個小應用程序。在某些時候,我需要將我的自定義類的對象保存到文本文件中,以便在我的自定義類中覆蓋toString()方法,然後使用ObjectOutputStream類將我的自定義類的對象保存到文本文件中。現在一切正常,即文本文件包含預期的文本。下面三行包含該Java:如何使用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 

回答

1

如果要附加要用對象拼合的基元類型值,請將您的ObjectOutputStream傳遞給PrintStream以使您可以附加一條新行,該行將影響static值,並將其作爲要求。

請參閱下面的閱讀和寫作。

//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(); 
0

希望你能意識到沿着一些靜態數據添加到我的文件,通過使ObjectOutputStream中和寫作的使用person它,你基本上是序列化的person對象。

3

簡答:你沒有。

ObjectOutputStream並不意味着以這種方式使用。它以API指定的格式輸出一個Serializable對象。這並不總是一個好主意,即在未來的版本中很容易破壞兼容性。

雖然輸出的格式看起來很可讀,但它包含很多不可打印的字符,添加一些靜態文本可能會破壞序列化。

你所尋找的是兩種:

一)明文序列,如JSON或XML(嘗試http://simple.sourceforge.net/,它真的很簡單)

B)除了你的序列化對象的文本文件。

除非你有很好的理由,否則你不應該試圖擴展ObjectOutputStream的功能,而且看起來你沒有。

相關問題