在序列化文件中逐行读取

时间:2014-04-14 00:20:22

标签: java serialization

我有一个序列化文件,我正在尝试抓取其中的每一行并将其添加到LinkedList中。我可以使用Scanner执行此操作,还是自序列化以后,我是否需要ObjectInputStream?我假设扫描仪你可以使用scanner.nextLine()或类似的东西,但我不认为OOS有这样的东西?我如何将每一行添加到列表中的单独节点?

这个问题也与this question here有关。这就是树最初序列化的方式。

1 个答案:

答案 0 :(得分:2)

序列化文件中没有新行(除非你最初编写它时以某种方式使它成为那样)。您必须使用ObjectOutputStreamObjectInputStream来序列化和反序列化。如果要序列化一堆对象,最好的选择可能是序列化整个列表,然后再次反序列化整个事物,并将其添加回新列表。根据您的其他问题判断,一个好的选择可能是将每个节点添加到列表中,而不是将每个对象分别写入文件:

... 
if (focusNode != null){

        System.out.println(focusNode);
       list.add(focusNode);

        preOrderTraverseTree(focusNode.leftChild);

        preOrderTraverseTree(focusNode.rightChild);
    }//end if
...

然后保存它:

try (ObjectOutputStream output = new ObjectOutputStream(
            new FileOutputStream(file))) {

        output.writeObject(lList);//this will write the list as a whole to the file
}

并将其读回来,我建议将其重新列入清单:

try (ObjectInputStream input = new ObjectInputStream(
            new FileInputStream(file))) {
        newList = (List) input.readObject();

从那里,如果你需要再次使用这些对象,你可以将它们从列表中拉出来等。