Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将序列化对象写入垃圾文件?_Java_File - Fatal编程技术网

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

Java 将序列化对象写入垃圾文件?,java,file,Java,File,我有一个实现Serializable的类播放器,但是当我将对象写入文件时,文本被弄乱了,如下所示。任何帮助都将不胜感激。多谢各位 “java.util.ArrayListxÒ™这是二进制序列化。它并不意味着要写入人类可读的文本文件。为此,您应该研究JSON或YAML之类的东西。我强烈建议不要使用ObjectOutputStream写入.txt文件-这会给人错误的印象 二进制序列化的要点是能够在以后使用相同的序列化协议对其进行反序列化-因此在本例中,您将使用ObjectInputStream。您应

我有一个实现Serializable的类播放器,但是当我将对象写入文件时,文本被弄乱了,如下所示。任何帮助都将不胜感激。多谢各位

“java.util.ArrayListxÒ™这是二进制序列化。它并不意味着要写入人类可读的文本文件。为此,您应该研究JSON或YAML之类的东西。我强烈建议不要使用
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());
        }