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

No - aFileWriter用于写入text,但 的输出ObjectOutputStream本质上是二进制数据。如果要将对象序列化为 XML,请使用了解 XML 的序列化程序例如XStream

于 2011-01-17T13:50:38.517 回答
1

ObjectOutputStream进行二进制表示。因此,您必须首先将其转换为字符串表示形式 - 十六进制或 Base64

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

str然后在标签之间写下这个。

如果你想要一个 xml 表示,而不是二进制表示,那么你可以使用XMLEncoderxml 版本的ObjectOutputStream

于 2011-01-17T13:52:28.640 回答
1

尝试以下二进制输出。

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

或文本输出

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

编辑:您可能需要对 cool_object.toString() 的输出进行编码,如果它包含 HTML 特殊字符。

于 2011-01-17T13:52:59.437 回答