2010-05-10 53 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

相關問題