Java 将序列化对象写入垃圾文件?
我有一个实现Serializable的类播放器,但是当我将对象写入文件时,文本被弄乱了,如下所示。任何帮助都将不胜感激。多谢各位 “java.util.ArrayListxÒ™这是二进制序列化。它并不意味着要写入人类可读的文本文件。为此,您应该研究JSON或YAML之类的东西。我强烈建议不要使用Java 将序列化对象写入垃圾文件?,java,file,Java,File,我有一个实现Serializable的类播放器,但是当我将对象写入文件时,文本被弄乱了,如下所示。任何帮助都将不胜感激。多谢各位 “java.util.ArrayListxÒ™这是二进制序列化。它并不意味着要写入人类可读的文本文件。为此,您应该研究JSON或YAML之类的东西。我强烈建议不要使用ObjectOutputStream写入.txt文件-这会给人错误的印象 二进制序列化的要点是能够在以后使用相同的序列化协议对其进行反序列化-因此在本例中,您将使用ObjectInputStream。您应
ObjectOutputStream
写入.txt
文件-这会给人错误的印象
二进制序列化的要点是能够在以后使用相同的序列化协议对其进行反序列化-因此在本例中,您将使用ObjectInputStream
。您应该发现它能够正确地反序列化存储在文件中的对象
(旁注:FileOutputStream
将自动创建一个不存在的新文件-您不需要自己创建。此外,您应该使用try with resources语句自动清理,而不是在finally
块外调用close()
。这是二进制序列化。它并不意味着要写入人类可读的文本文件。为此,您应该研究JSON或YAML之类的东西。我强烈建议不要使用ObjectOutputStream
写入.txt
文件-这会给人错误的印象
二进制序列化的要点是能够在以后使用相同的序列化协议对其进行反序列化-因此在本例中,您将使用ObjectInputStream
。您应该发现它能够正确地反序列化存储在文件中的对象
(旁注:FileOutputStream
将自动创建一个不存在的新文件-您不需要自己创建。此外,您应该使用try with resources语句自动清理,而不是在finally
块外调用close()
。哦,忘记添加“玩家”是类型的ArrayList哦忘了添加“players”是类型的ArrayList
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());
}