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());
}
我有一个实现可序列化的类播放器,但是当我将对象写入文件时,文本会变得困惑,如下所示。任何帮助将非常感激。谢谢。
“Øí sr java.util.ArrayListxÒ™Ça I sizexp w srplayers.playerÌ`~%×êòœ IageL firstNamet Ljava/lang/String;xp t Trevorsq ~ t Michaelax”
最佳答案
这是二进制序列化。它并不意味着写入人类可读的文本文件。为此,您应该研究 JSON 或 YAML 等内容。我强烈建议反对使用ObjectOutputStream
写入.txt
文件 - 它会给人错误的印象。
二进制序列化的要点是稍后能够使用相同的序列化协议(protocol)对其进行反序列化 - 因此在本例中您将使用 ObjectInputStream
。您应该发现它能够正确反序列化存储在文件中的对象。
(旁注:如果文件不存在,FileOutputStream
将自动创建一个新文件 - 您不需要自己这样做。此外,您应该使用 try-with-resources语句自动清理,而不是仅仅在 finally
block 之外调用 close()
。)
关于java - 将序列化对象写入垃圾文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25344052/