0

ObjectOutputStreamこのように使用する方法はありますか?

<tag>output of the ObjectOutputStream</tag>

私が試してみると:

FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream oos = new ObjectOutputStream(fos);
FileWriter fw = new FileWriter(fos);

そして例えば:

fw.write("<tag>");
oos.write(cool_object);
fw.wrote("</tag>");

その結果は得られません。ObjectOutputStream毎回ファイルを完全に上書きしているようです。

4

3 に答える 3

4

いいえ - aはテキストFileWriterを書き込むためのものですが、 の出力は本質的にバイナリデータです。オブジェクトを XML にシリアライズする場合は、XML を認識しているシリアライザ( XStreamなど) を使用します。ObjectOutputStream

于 2011-01-17T13:50:38.517 に答える
1

ObjectOutputStreamバイナリ表現を作成します。したがって、最初にそれを文字列表現に変換する必要があります-16進数またはBase64のいずれか

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
String str = Base64.encodeBase64(baos.toByteArray());

strこれをタグの間に書きます。

バイナリ表現ではなく xml 表現が必要な場合XMLEncoderは、の xml バージョンである を使用できます。ObjectOutputStream

于 2011-01-17T13:52:28.640 に答える
1

次のバイナリ出力を試してください。

oos.writeObject("<tag>");
oos.writeObject(cool_object);
oos.writeObject("</tag>");

OR テキスト出力

fw.write("<tag>"+cool_object+"</tag>");

編集:cool_object.toString() の出力に HTML 特殊文字が含まれている場合は、その出力をエンコードする必要がある場合があります。

于 2011-01-17T13:52:59.437 に答える