【问题标题】:Java Programming - Best way to save/read data for an application [closed]Java 编程 - 为应用程序保存/读取数据的最佳方式 [关闭]
【发布时间】:2013-03-16 12:28:24
【问题描述】:

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

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

【问题讨论】:

  • 从来没有一个最好的方法来做任何事情。
  • 菲利普:感谢您的回复。我想最好的方法可能是错误的提问方式。只是希望找出是否有比将完整文件读取到内存更首选的方法。
  • 使用 windows 注册表。 stackoverflow.com/questions/62289/…

标签: java file-io load save


【解决方案1】:

这取决于你有多少数据。

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 非常感谢 TheEwook 抽出时间提供帮助,而不是对一个诚实的问题投反对票。
      • 没问题。我希望我回答了你的问题;)
      猜你喜欢
      • 2018-12-15
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      相关资源
      最近更新 更多