java - 将序列化对象写入垃圾文件?

标签 java file

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/

相关文章:

java - 文件中的扫描仪输入不匹配异常

android - file.exists() 为现有文件返回 false(对于不同于 pdf 的任何内容)

Python 认为我的文件是空的,即使它不是空的

java - Spark group按问题

java - twitter4j - 如果我使用“自始至终”限制,则不会返回任何结果

python - 有没有一种方法可以从一个文件中查找另一个文件中的单词,并将在另一个文件中找不到的单词输出到一个新文件中?

c# - 多文件 I/O

java - GEF 中的 SVG 图像

java - 使 TextView 粗体斜体等

java - Cassandra 中计算行中列数的方法是什么?