【问题标题】:Saving data to file or database将数据保存到文件或数据库
【发布时间】:2017-10-25 19:45:48
【问题描述】:

我开始开发一个新的 Java 桌面应用程序,它可以帮助我和我的同事学习词汇。它将包含大约 700 个单词,一些文本(指向其中包含的单词),也许还有一些图像(还不确定那部分)。数据将永远改变,我希望程序能够离线运行。

问题是:我应该使用数据库、文本文件还是将数据序列化为文件?或者,如果还有其他我不知道的选择?如果你能详细解释你的选择,我会很高兴。

【问题讨论】:

  • 您是否正在规划 Web 应用程序、Android 应用程序、桌面应用程序或其他应用程序?
  • Oups 忘了提到这一点。这是一个桌面应用程序。
  • 那么常规的数据库就不再适用了,除非你想提供一个安装数据库的安装程序。也许使用平面文件对您来说是最方便的做法。
  • 平面文件是指文本文件,还是我应该将数据序列化到其中?我可以想象通过序列化从单词中创建对象然后将它们链接到文本会更容易。

标签: java persistent-storage


【解决方案1】:

如果数据从不改变并且只有 700 个字,那么使用文件可能是最简单的。 如果您的数据有点复杂,并且有很多字段并且不断更新,那么数据库会更可取,但仍然可以使用 csv 文件。

【讨论】:

  • 有了这么小的条目,这两种方法都可以非常快速地工作,效率并不是真正的因素。但我会推荐 .txt 文件或 .csv 文件,您可以在其中使用逗号分隔符分隔单词。
  • FWIW 我更喜欢制表符分隔;它们在您在“CSV”文件中获得的那种文本中要少得多。
  • 或者,您可以每行有一个单词,然后您可以遍历文件,将每一行加载到字符串列表中。
  • 逗号分隔的问题是文本将是普通文章,因此其中包含逗号很常见。
  • 2 个不同的文件似乎是最佳选择。感谢所有的建议。 :-)
【解决方案2】:

由于您想离线访问这些数据并且数据永远不会改变,我认为最好的选择是只使用文本文件,这在访问和速度方面会更有效。

【讨论】:

    【解决方案3】:

    将所有数据作为可序列化的 Java 对象保存在内存中,并在应用程序未运行时将它们序列化。评估 airomem - 非常适合您的非常好的解决方案。

    【讨论】:

      猜你喜欢
      • 2012-03-27
      • 2020-12-26
      • 2020-12-17
      • 2021-06-05
      • 2011-02-14
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      相关资源
      最近更新 更多