Java 如何在程序停止后保持布尔值?

Java 如何在程序停止后保持布尔值?,java,boolean,Java,Boolean,我创建了一个类变量,如下所示 private boolean xyz = false; 之后,我调用一个方法,该方法将执行一些操作,然后将布尔变量的值更改为true 现在,下次我重新运行代码时,布尔值不再保持为true,而是返回为false 我希望它保持真实,即使我关闭我的程序,然后再次运行它 我希望它保持真实,即使我关闭我的程序,然后再次运行它 这意味着你需要在某个地方坚持下去 选择包括: 网上某处 数据库 通过API的用户偏好 位于已知位置的简单文件 基本上,您需要将数据写到某个地方,

我创建了一个类变量,如下所示

private boolean xyz = false;
之后,我调用一个方法,该方法将执行一些操作,然后将布尔变量的值更改为
true

现在,下次我重新运行代码时,布尔值不再保持为true,而是返回为false

我希望它保持真实,即使我关闭我的程序,然后再次运行它

我希望它保持真实,即使我关闭我的程序,然后再次运行它

这意味着你需要在某个地方坚持下去

选择包括:

  • 网上某处
  • 数据库
  • 通过API的用户偏好
  • 位于已知位置的简单文件
基本上,您需要将数据写到某个地方,然后在启动时重新读取。没有更多的上下文,很难给出更具体的建议

我希望它保持真实,即使我关闭我的程序,然后再次运行它

这意味着你需要在某个地方坚持下去

选择包括:

  • 网上某处
  • 数据库
  • 通过API的用户偏好
  • 位于已知位置的简单文件

基本上,您需要将数据写到某个地方,然后在启动时重新读取。如果没有更多的上下文,很难给出更具体的建议。

退出程序时,使用下面的命令将变量保存到您自己的文件中,最好是程序的本地目录。这称为序列化

然后,当你启动你的程序时,你可以用下面的代码读回它。这称为反序列化


您可能还需要检查文件是否是以前创建的,否则,您将捕获IOException。您可以通过创建一个文件名为xyz.ser的文件对象并对其调用exists()。

退出程序时,使用下面的命令将变量保存到您自己的文件中,最好是程序的本地目录。这称为序列化

然后,当你启动你的程序时,你可以用下面的代码读回它。这称为反序列化


您可能还需要检查文件是否是以前创建的,否则,您将捕获IOException。您可以通过创建一个文件名为xyz.ser的文件对象并对其调用exists()。

我目前有两种方法Method1和Method2。我有另一段代码调用这两个方法。逻辑是,如果布尔值为False,那么将调用Method1,然后将布尔值设置为True。现在,当我重新运行代码时,布尔值if false,因此每次调用Method1!!!所以下次我运行代码时,布尔值应该为true,并且应该调用Method2。因此Method1将只被调用一次。@Nisarg:是的,如果您在一个新的进程中重新运行,而该进程没有完成我回答中的任何操作,您将“忘记”结果。这就是为什么我给出了答案。我将按照您的建议尝试其中一个选项!!非常感谢你的帮助。我目前有两种方法Method1和Method2。我有另一段代码调用这两个方法。逻辑是,如果布尔值为False,那么将调用Method1,然后将布尔值设置为True。现在,当我重新运行代码时,布尔值if false,因此每次调用Method1!!!所以下次我运行代码时,布尔值应该为true,并且应该调用Method2。因此Method1将只被调用一次。@Nisarg:是的,如果您在一个新的进程中重新运行,而该进程没有完成我回答中的任何操作,您将“忘记”结果。这就是为什么我给出了答案。我将按照您的建议尝试其中一个选项!!非常感谢你的帮助…如果文件存在该怎么办。我的意思是说,当我第二次运行程序时,文件已经存在,因此file.exists()==True。那么我应该怎么做,我应该仍然创建fileoutputstream和objectoutputstream对象吗?您可以毫不担心地执行序列化部分,因为它会自动为您创建文件并第二次覆盖它,依此类推。对于反序列化,当您读回变量时,如果文件存在,您应该执行要执行的操作,如果不存在->这是您的程序第一次运行,因此不执行任何操作,并在退出时保存变量。下一次,该文件将在那里,您可以将其读回。那么,如果该文件存在呢。我的意思是说,当我第二次运行程序时,文件已经存在,因此file.exists()==True。那么我应该怎么做,我应该仍然创建fileoutputstream和objectoutputstream对象吗?您可以毫不担心地执行序列化部分,因为它会自动为您创建文件并第二次覆盖它,依此类推。对于反序列化,当您读回变量时,如果文件存在,您应该执行要执行的操作,如果不存在->这是您的程序第一次运行,因此不执行任何操作,并在退出时保存变量。下次,该文件将在那里,您可以将其读回。
try
      {
         FileOutputStream fileOut = new FileOutputStream("xyz.ser");//this saves to the directory where your program runs in
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(xyz);
         out.close();
          fileOut.close();
      }catch(IOException i)
      {
          i.printStackTrace();
      }
try
         {
            FileInputStream fileIn = new FileInputStream("xyz.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            xyz = (boolean) in.readObject();
            in.close();
            fileIn.close();
        }catch(IOException i)
        {// you are here if xyz.ser does not exist
            i.printStackTrace();
            return;
        }