所以我正在创建一个包含链表的程序,我需要它在程序退出时存储列表中的信息,并在启动时加载
无论如何都要这样做?也许不是文件
提前感谢!
答案 0 :(得分:2)
我建议将内容写入文本文件,但正如Elliott Frisch提到的还有其他几种方法。对我来说最简单的似乎是使用序列化来写入文本文件。
注意:这要求将列表定义为LinkedList类型而不是List,因为LinkedList是可序列化的,而List不是。
我的意思是:
好的:LinkedList<String> list = new LinkedList<String>();
不行:List<String> list = new LinkedList<String>();
写入文件:
FileOutputStream fout = new FileOutputStream(“tmp.txt”);
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(myList);
从文件中读取:
FileInputStream fin = new FileInputStream(“tmp.txt”);
ObjectInputStream in = new ObjectInputStream(fin);
LinkedList<WhateverData> myList = (LinkedList<WhateverData>) in.readObject();
我认为WhateverData
也应该是可序列化的。
答案 1 :(得分:1)
有很多方法可以做到这一点,但对于初学者来说,保存到文本文件中可能是最好的方法。循环遍历链接列表,并使用PrintWriter
(或Java中的任何其他类)将所有内容存储在指定的.txt文件中:
PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
CustomList list = new CustomList();//not sure what your list is called
//iterate over list {
writer.println(list.get(currentPosition));
}
writer.close();//saves file
来源:How do I create a file and write to it in Java?
使用BufferedReader
:
BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt"));
CustomList list = new CustomList();//not sure what your list is called
String line = null;
while ((line = reader.readLine()) != null) {
list.add(new CustomeNode(line));
}
来源:Java: How to read a text file
注意:这是伪代码。
答案 2 :(得分:1)
一般来说,实现目标有三个主要步骤 -
您的持久存储可能几乎是任何形式的存储。它可能是一个远程数据库服务器(或文件系统),它可能是一个内存系统,它可能由一个众所周知的&#34;本地filePath。这里有persistence strategies的更多阅读。
答案 3 :(得分:0)
你必须使用一个文件,没有别的办法。为您的数据制作格式,写入文件,再次读取。这就是文件,它们是与程序分开的永久数据存储机制。
答案 4 :(得分:0)
不要将此视为答案,而应将其视为评论。
您是否尝试过在序列化的背景下思考。 例如:如果您是用于链表的数字列表,则可以序列化整数数组。
稍后程序启动时,您可以反序列化并使用重组数字来填充链接列表。
希望这有帮助。