将 ObjectOutputStream 和 FileOutputStream 与 FileWriter 结合使用

发布于 2024-10-13 00:55:11 字数 495 浏览 9 评论 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每次都会完全覆盖该文件。

Is there any way to use ObjectOutputStream like this:

<tag>output of the ObjectOutputStream</tag>

If I try:

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

And for example:

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

I don't get that result. It seems the ObjectOutputStream overwrites the file completly each and every time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

森林散布 2024-10-20 00:55:11

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

No - a FileWriter is for writing text, but the output of ObjectOutputStream is inherently binary data. If you want to serialize objects to XML, use a serializer which knows about XML, e.g. XStream.

等风来 2024-10-20 00:55:11

尝试以下二进制输出。

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

或文本输出

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

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

try the following binary output.

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

OR text output

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

EDIT: You may need to encode the output of cool_object.toString() if it contains and HTML special characters.

Hello爱情风 2024-10-20 00:55:11

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

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

然后在标记之间写入此 str

如果您想要 xml 表示形式,而不是二进制表示形式,那么您可以使用 XMLEncoder,它是 ObjectOutputStream 的 xml 版本

The ObjectOutputStream makes a binary representation. So you must first turn that into a string representation - either hex or Base64

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

then write this str between the tags.

If you want an xml representation, rather than a binary representation, then you can use the XMLEncoder which is the xml version of ObjectOutputStream

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文