2011-08-16 11 views
0

私はJavaで小さなアプリケーションを開発しています。特定の時点で私は私のカスタムクラスのオブジェクトをテキストファイルに保存する必要があります。toString()メソッドを自分のカスタムクラスにオーバーライドしてから、ObjectOutputStreamクラスを使用してカスタムクラスのオブジェクトをテキストファイルに保存します。今はすべてうまく動作します。つまり、テキストファイルにはテキストが含まれていますが、そのテキストとともにいくつかの奇妙な文字や生データも表示されます。次の3行は、そのテキストファイルに保存する生データを制限する方法

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

必要に応じて、JAXBXStreamなどのXMLシリアル化ライブラリを調べる必要があります。

上記の解決方法は、オブジェクトの文字列表現をファイルに保存するだけです(必要なものにすることもできます)が、オブジェクトをファイルに保存したい場合は、おそらくアクセスできますそれ以降。

JAXBとXStreamの両方は、JavaオブジェクトをXMLでシリアライズ/アンシリアル化するメソッドを提供します。 XStream(おそらくJAXBでも、わかりません)では、もっとコンパクトなものが必要な場合は、JSONでオブジェクトをシリアル化/シリアル化解除することさえできます。

関連する問題