2011-08-16 81 views
0

我正在開發一個Java應用程序。在某些時候,我需要將我的自定義類的對象保存到文本文件中,以便在我的自定義類中覆蓋toString()方法,然後使用ObjectOutputStream類將我的自定義類的對象保存到文本文件中。現在一切正常,即我的文本文件包含文本,但連同該文本一起也包含一些奇怪的字符或原始數據。下面三行包含該如何限制原始數據保存在文本文件中

ObjectOutputStream outputStream = null; 
outputStream = new ObjectOutputStream(new FileOutputStream(filename)); 
outputStream.writeObject(person);//person is the instance of my custom class 

主要代碼是沒有什麼辦法來限制原始數據被保存在我的文本文件?

回答

3

ObjectOutputStream序列化您傳遞給writeObject()的對象。它不寫入對象的文本版本。如果要將toString()返回的值寫入文件,請使用類似FileWriter的方式打開文件,通過調用toString()方法獲取String,然後將其寫入FileWriter。

1

根據您的需要,您應該應該查看XML序列化庫,如JAXBXStream

上面給出的解決方案只會將對象的字符串表示形式保存到文件中(這可能是您想要的),但我想如果要將對象保存到文件中,則可能會訪問它之後。

JAXB和XStream都提供了在XML中序列化/反序列化Java對象的方法。有了XStream(也許還有JAXB,我也不知道),如果你需要更緊湊的東西,你甚至可以用JSON序列化/反序列化你的對象。

相關問題