Java编程 – 保存/读取应用程序数据的最佳方法

如果问题已经得到解答,请原谅这个问题,但我一直在网上搜索过去一小时试图解决这个问题。

我正在努力回到Java编程,我正在努力了解保存/读取我将在我的应用程序中存储的数据的最佳方法。 我会将所有内容放入文本文件并在应用程序启动时全部读取并在退出时保存所有内容吗? 我想如果应用程序太大,可能会占用太多内存?

我想说如果你需要存储一些信息,你可以使用属性文件。

  • 例如: http : //www.mkyong.com/java/java-properties-file-examples/

如果您需要存储比仅仅属性更复杂的结构,我建议使用数据库(HSQL,Oracle,Mysql,MSSQL等)。 根据您的需要。

  • 例如: http : //www.mkyong.com/tutorials/jdbc-tutorials/

这取决于你有多少数据。

当您想要存储一些键/值对(如某些用户首选项)时,您可以使用Preferences类,该类是使用Windows上的注册表,Linux上的配置文件以及其他任何将用户首选项存储在其他上的首选方法实现的。 plattforms。

如果您的实际数据对于注册表而言太多而不足以保证数据库(大约几MB的数据),则使用一个或多个平面文件可能是一种解决方案。 当数据很复杂时,使用像XML这样的标准化格式而不是自制的东西可能是个好主意。 Java具有允许轻松解析和序列化XML的类。 另一种快速而肮脏的解决方案是使用ObjectStreams来保存和恢复整个对象。 这很容易实现,但可能效率不高,因为它存储了很多可能不必要的元信息。

但是当你拥有大量数据时(比你完全阅读和写入更容易),使用数据库可能是一个聪明的举动。 数据库允许您轻松访问大量数据(以几GB的顺序),并为您提供许多免费的function,这些function本身很难实现(比如使用索引搜索记录)。 数据库并不神奇。 他们还使用文件来存储他们的数据(但是具有非常聪明的结构的文件)。 您可以自己复制数据库的每个function。 但是,当你可以使用现有的解决方案时,为什么要重新发明轮子呢?

如果问题还在于如何将数据输入和输出文件,我只想抛出关键字“序列化”,以防您不熟悉它。 谷歌,有很多教程。 简而言之,Java内置支持将对象写入二进制字节流并从二进制字节流中读取对象,然后您可以将这些对象写入/读取文件。 因此,您不必实现用于存储和读取不同成员的代码。 只需在代码中标识保存程序状态的对象并对其进行序列化即可。 您还可以序列化为XML,使创建的文件可手动编辑。