将 ObjectOutputStream 和 FileOutputStream 与 FileWriter 结合使用
有没有办法像这样使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
否 -
FileWriter
用于写入文本,但ObjectOutputStream
的输出本质上是二进制数据。如果要将对象序列化为 XML,请使用了解 XML 的序列化程序,例如 XStream。No - a
FileWriter
is for writing text, but the output ofObjectOutputStream
is inherently binary data. If you want to serialize objects to XML, use a serializer which knows about XML, e.g. XStream.尝试以下二进制输出。
或文本输出
编辑:如果 Cool_object.toString() 包含 HTML 特殊字符,您可能需要对它的输出进行编码。
try the following binary output.
OR text output
EDIT: You may need to encode the output of cool_object.toString() if it contains and HTML special characters.
ObjectOutputStream
进行二进制表示。因此,您必须首先将其转换为字符串表示形式 - 十六进制或 Base64,然后在标记之间写入此
str
。如果您想要 xml 表示形式,而不是二进制表示形式,那么您可以使用
XMLEncoder
,它是ObjectOutputStream
的 xml 版本The
ObjectOutputStream
makes a binary representation. So you must first turn that into a string representation - either hex or Base64then 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 ofObjectOutputStream