[英]Writing a serialized object to file garbaged?
try
{
File dataFile = new File("C:/Users/keatit/Desktop/players.txt");
if(!dataFile.exists())
{
dataFile.createNewFile();
}
FileOutputStream fos = new FileOutputStream("C:/Users/keatit/Desktop/players.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(players);
oos.close();
}
catch(FileNotFoundException fnfex)
{
System.out.println(fnfex.getMessage());
}
catch(IOException ioex)
{
System.out.println(ioex.getMessage());
}
我有一個實現Serializable的類播放器,但是當我將對象寫入文件時,文本混亂了,看起來像下面的樣子。 任何幫助將非常感激。 謝謝。
“¬rsr?java.util.ArrayListxÒ™ÇaI sizexp w sr?players.playerÌ`〜%×êòœI ageL firstNamet Ljava / lang / String; xp t Trevorsq〜t Michaelax”
這是二進制序列化。 這並不意味着要寫入人類可讀的文本文件。 為此,您應該研究JSON或YAML之類的東西。 我強烈建議您不要使用ObjectOutputStream
寫入.txt
文件-這樣會給人留下錯誤的印象。
二進制序列化的重點是以后可以使用相同的序列化協議對其進行反序列化-因此,在這種情況下,您將使用ObjectInputStream
。 您應該發現它能夠正確地反序列化存儲在文件中的對象。
(旁注:如果FileOutputStream
不存在,它會自動創建一個新文件-您不需要自己這樣做。此外,您應該使用try-with-resources語句自動進行清理,而不僅僅是調用在finally
塊之外的close()
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.