【问题标题】:How to store variable once program has terminated程序终止后如何存储变量
【发布时间】:2013-04-07 18:59:53
【问题描述】:

我有一个计数器,每次用户输入特定单词时都会递增。程序终止后如何存储变量值,以便用户再次启动程序时可以使用它?

【问题讨论】:

  • 您可以在Runtime.addShutDownHook 方法中的文件中写入variable 值。当您启动应用程序时,您可以从该文件中读取值。
  • @DeepakBala:那么您最依赖哪种方法?每次更改计数器时将计数器值写入文件导致 I/O 开销..?或者您还有其他更好的选择吗?
  • 鉴于用户手动输入每个单词,我怀疑开销会很高。

标签: java variables int


【解决方案1】:

您可以将int 写入File,然后在程序重新启动时读取File

您只需要在启动时检查文件是否存在,如果确实读取它,则将int 设置为零(或任何默认值)。

这是一个使用DataOutputStream 的简单示例——有些人可能会说有点矫枉过正,但它允许您的代码可扩展;您也可以将其他内容写入文件。

public static void main(String[] args) throws IOException {
    int myCounter = 0;
    myCounter += 10;
    final File file = new File("/some/sensible/location");
    try (final DataOutputStream dos = new DataOutputStream(new FileOutputStream(file))) {
        dos.writeInt(myCounter);
    }
    try (final DataInputStream dis = new DataInputStream(new FileInputStream(file))) {
        System.out.println("Reading int from file: " + dis.readInt());
    }
}

添加一个名为updateFile 之类的方法,并确保File 与当前程序值保持同步。

【讨论】:

  • 感谢@bmorris591 和所有其他回复的人。我正在考虑将数字写入记事本,但认为 Java 会有更好的解决方案。
【解决方案2】:

为简单起见,您将要使用Scanner,并读入用户输入的数据。然后将输入的内容存储到程序中的变量中,然后将它们写入文件。

Here 是一个很好的入门教程。

【讨论】:

    【解决方案3】:

    您可以写入文件(例如使用 Scanner),然后在程序启动时读取文件。

    【讨论】:

      【解决方案4】:

      您可以从具有已知路径和可靠权限的属性文件中读取/写入。如果这是用户偏好/配置,您可以使用Preferences API。 API 可以跨多个平台存储值,同时抽象存储它的位置/方式。

      【讨论】:

        【解决方案5】:

        如果您只需要一个简单的值,我会像其他答案一样使用一个简单的文件。

        如果您需要更多信息,我会使用像 H2 这样的自包含数据库。设置起来可能与编写自己的简单文件存储一样快,而且您可以从中获得更多收益。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-01-24
          • 1970-01-01
          • 2014-01-17
          • 1970-01-01
          • 2014-07-06
          • 2012-07-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多