6

如果已经回答了这个问题,请原谅这个问题,但过去一个小时我一直在网上搜索以试图弄清楚。

我正在努力重新开始 Java 编程,并且我正在尝试了解保存/读取我将存储在我的应用程序中的数据的最佳方式。我是否会将所有内容都放入一个文本文件并在应用程序启动时将其全部读取并在退出时将其全部保存?我认为如果应用程序太大,可能会占用太多内存?

4

3 回答 3

7

这取决于你有多少数据。

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

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

但是,当您拥有大量数据(超过了您完全可以轻松读写的数据)时,使用数据库可能是明智之举。数据库允许您轻松访问大量数据(数 GB 量级),并免费为您提供许多您自己难以实现的功能(例如使用索引搜索记录)。数据库不是魔法。他们还使用文件来存储他们的数据(但是文件结构非常巧妙)。您可以自己复制数据库的每个功能。但是,当您可以使用现有解决方案时,为什么还要重新发明轮子呢?

于 2013-03-26T16:05:11.510 回答
5

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

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

于 2013-03-26T16:07:20.067 回答
0

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

于 2013-03-26T16:10:21.403 回答