2010-05-10 60 views
2

当我用Java编写一个新的文本文件时,我在文件的开头得到这些字符:Java:序列化结果导致文件开头出现不需要的字符

¨Ìt 

这是代码:

public static void writeMAP(String filename, Object object) throws IOException { 
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename)); 
    oos.writeObject(object); 
    oos.close(); 
} 

谢谢

+1

_how_你写的文本文件? – Bozho 2010-05-10 08:34:22

+2

这不是一个文本文件。你使用ObjectOutputStream序列化对象,所以你不能指望内容是文本。 – 2010-05-10 08:38:28

回答

3
Writer output = null; 
String text = "Www.criandcric.com. is my site"; 
File file = new File("write.txt"); 
output = new BufferedWriter(new FileWriter(file)); 
output.write(text); 
output.close(); 

我希望与此你可以得到一个想法如何做到这一点。

+0

什么是,如果我想使用一个对象,而不是一个字符串? – leonkuehn 2017-03-07 21:05:33

3

当使用ObjectOutputStream你让你的对象的二进制序列化。您不应该将该文件视为“文本文件”。

如果您想以人类可读的方式序列化您的对象,请使用java.beans.XMLEncoder。阅读关于如何以类似ObjectOutputStream的方式使用它的链接文档。它生成XML。

2

你并没有写文本到文件,你正在写对象,这意味着你得到一个流头,类型信息和内部结构。写文,使用作家:“文本文件”

Writer w = new OutputStreamWriter(new FileOutputStream(filename), encoding); 
+0

使用FileWriter编写文本可能更简洁,以简化非ASCII编码处理。 – 2010-05-10 08:44:07

+2

@Steven:FileWriter完全没用,因为它*不*完全允许正确处理编码 - 它总是使用平台默认编码。 – 2010-05-10 08:47:41

4

ObjectOutputStreams是意味着写作它们专门用于将Java对象的中间表示写入磁盘。这个过程被称为序列化。

你很可能想使用一个Writer,这对于制作人类可读的文本文件更有用。特别是,你应该看看FileWriter和/或PrintWriter

相关问题