所以我正在制作一个有链接列表的程序,我需要它在程序退出时存储列表中的信息,并在启动时加载
有没有办法这样做?可能不是文件
提前感谢!
我建议将内容写入文本文件,但正如Elliott Frisch所提到的,还有其他几种方法。对我来说,最简单的方法似乎是使用序列化写入文本文件。
注意:这需要将列表定义为类型LinkedList,而不是list,因为LinkedList是可序列化的,而list不是
我的意思是:
OK: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
也应该是可序列化的。
有很多方法可以做到这一点,但对于初学者来说,保存到文本文件中可能是最好的方法。循环浏览您的链接列表,并使用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
来源:我如何创建一个文件并用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:如何读取文本文件
注意:这是伪代码。
不要把它当作一个答案,而是当作一个注释。
你试过在序列化的背景下思考吗。例如:如果你有一个用于链表的数字列表,你可以序列化整数数组。
稍后,当程序启动时,您可以反序列化并使用重新格式化的数字数组来填充您的链表。
希望这能有所帮助。
通常有三个主要步骤来实现您的目标-
- 检查持久存储是否有链接列表(如果有,则检索它,否则创建链接列表)
- 对链接列表执行处理(添加、删除、编辑等)
- 将链接列表存储到持久存储
您的持久存储几乎可以是任何形式的存储。它可能是远程数据库服务器(或文件系统),可能是内存系统,可能由"众所周知"的本地filePath支持。以下是关于持久性策略的更多阅读。
您必须使用文件,没有其他方法。为您的数据设置格式,写入文件,然后再次读取。文件就是这样,它们是独立于程序的永久数据存储机制。