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

时间:2013-03-26 15:58:56

标签: java file-io load save

如果问题已经得到解答,请原谅这个问题,但我一直在网上寻找过去一小时的问题,试图找出答案。

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

3 个答案:

答案 0 :(得分:6)

这取决于您拥有多少数据。

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

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

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

答案 1 :(得分:5)

我想说如果您需要存储少量信息,可以使用属性文件。

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

答案 2 :(得分:0)

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