如何在java中保存系统状态并在重新编译项目时恢复系统?

pxyaymoc  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(229)

我有一个java系统,不同的类存储不同的信息。有一个主类,用户将在其中输入这些类的信息,并使它们相互作用。用户完成后,将退出系统。下次用户重新编译项目时,所有先前输入的数据都应该在那里。用户可以使用相同的数据或添加更多信息。
简单来说,如何在关闭时暂停/保存系统,并在再次执行时恢复它?另外,我不能在这里使用数据库。一定是别的东西。

crcmnpdw

crcmnpdw1#

下次用户重新编译项目时
用户不会重新编译项目。他们只是运行你的应用程序。
你一直说“不是db”,所以,答案很简单:不可能。
根据定义,数据库保存一些数据,因此得名:它是数据的基础。如果那不可能,你就不走运了,你想要的是不可能的。
也许你在措辞上也很粗心,你的意思可能是:

我不想强迫用户安装数据库

好吧,那么,不要。使用进程内数据库,如h2。用户不知道涉及到一个基于sql的数据库系统,他们看到的只是一个文件的出现。不启动额外进程。

我讨厌sql

好吧,那么,不要。有一些工具可以将整个对象结构转换成一个bag o字节,然后保存到文件中,例如jackson,它可以将一个对象(如果需要,可以包含所有相关的用户数据)转换成json数据,然后保存到文件中,然后再还原。当然,如果有人在编写过程中被电缆绊倒,文件就会损坏。有很多方法可以解决这个问题 .tmp ,然后将它移动到适当的位置,因为这通常是原子的),但是你有点致力于在这里重新发明轮子,因为你坚持你不想要数据库。

我只想保存整个系统的状态

你不能。不是java的工作方式。

我不能零依赖吗?

有一个java内置的序列化系统,它很差劲,在如何使用它的问题上有一系列的注意事项,java平台本身的维护人员或多或少都不喜欢它。这不是办法。它仍然不会“保存整个系统状态”,它只保存一个对象,并且在这方面做得比jackson差得多。

相关问题