我有一个序列化文件,我正在尝试抓取其中的每一行并将其添加到LinkedList中。我可以使用Scanner
执行此操作,还是自序列化以后,我是否需要ObjectInputStream
?我假设扫描仪你可以使用scanner.nextLine()或类似的东西,但我不认为OOS有这样的东西?我如何将每一行添加到列表中的单独节点?
这个问题也与this question here有关。这就是树最初序列化的方式。
答案 0 :(得分:2)
序列化文件中没有新行(除非你最初编写它时以某种方式使它成为那样)。您必须使用ObjectOutputStream
和ObjectInputStream
来序列化和反序列化。如果要序列化一堆对象,最好的选择可能是序列化整个列表,然后再次反序列化整个事物,并将其添加回新列表。根据您的其他问题判断,一个好的选择可能是将每个节点添加到列表中,而不是将每个对象分别写入文件:
...
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();
从那里,如果你需要再次使用这些对象,你可以将它们从列表中拉出来等。