2013-03-26 77 views
2

如果已经得到解答,请原谅此问题,但我一直在网上搜索过去一小时以试图弄清楚。Java编程 - 为应用程序保存/读取数据的最佳方式

我正在努力回到Java编程中,并试图理解保存/读取数据的最佳方式,我将存储在我的应用程序中。我会将所有内容都放入一个文本文件中,并在应用程序启动时将其全部读入,并将其全部保存在退出程序中?我认为如果应用程序太大可能会消耗太多内存?

+4

从来没有最好的办法做任何事情。 – Philipp 2013-03-26 16:02:00

+0

Philipp:谢谢你的回应。我想最好的方法可能是问这个问题。只希望找出是否有更优先的方式,然后将完整的文件读入内存。 – sweaty 2013-03-26 16:03:59

+0

使用Windows注册表。 http://stackoverflow.com/questions/62289/read-write-to-windows-registry-using-java – Tareq 2013-03-26 16:04:10

回答

1

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

如果需要存储更复杂的结构不仅仅是我建议使用一个数据库(HSQL,Oracle,MySQL等,MSSQL等)的性质。取决于你的需求。

+0

非常感谢您花时间帮忙,而不是投下一个诚实的问题。 – sweaty 2013-03-26 16:09:31

+0

没问题。我希望我回答你的问题;) – TheEwook 2013-03-26 16:13:22

4

这取决于你有多少数据。

如果您想存储一些像/某些用户喜好一样的键/值对,您可以使用Preferences类,该类使用Windows上的注册表实现,Linux上的配置文件以及其他任何存储方式用户在其他平台上的偏好。

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

但是,当您有大量数据(比您完全熟悉读写操作更舒适)时,使用数据库可能是一个明智之举。数据库使您可以轻松访问海量数据(数GB),并为您提供许多免费的功能,这些功能很难自行实现(如使用索引搜索记录)。数据库并不神奇。他们还使用文件来存储他们的数据(然而,结构非常聪明的文件)。您可以自己复制数据库的每个功能。但是,如果您只需使用现有的解决方案,为什么要重新发明轮子?

0

如果问题还怎么获取数据流入和流出的文件,我只是想扔出去的关键字“系列化”,如果你不熟悉它。谷歌它,有大量的教程。简而言之,Java已经构建了支持将对象写入二进制字节流并从二进制字节流中读取对象,然后您可以写入/读取文件。所以你不必执行代码来存储和阅读你的不同成员。只需确定代码中保存程序状态并序列化这些对象即可。您还可以序列化为XML,使创建的文件可以手动编辑。

相关问题