【问题标题】:How to store the value of a variable after closing the program in javajava中关闭程序后如何存储变量的值
【发布时间】:2020-01-12 18:12:57
【问题描述】:

我制作了一个以登录表单开头的程序。我想输入更改密码和用户名的选项,但是在关闭程序后,当我再次打开它时,这些变量会获得默认值。这是更改类的代码,其中用户名是名为“emriuser”的全局变量,密码是“fkalimi”,我将它们设为全局以在我的项目的不同类中使用,我不知道,这是正确的方法吗?因此我想知道关闭程序后如何存储它们的值:

    public class Change extends javax.swing.JFrame {
    // .......

   private void oActionPerformed(java.awt.event.ActionEvent evt) {  
   String p = pass2.getText();
   String u = uiri.getText();

   if (u.equals(emriuser) && (p.equals(fkalimi))){ 
       emriuser=u;
       fkalimi=p;
       //  here a code how to store the values
   }

另外我想知道下次打开程序时如何调用它们的值:

 public class LogIn extends javax.swing.JFrame {
   // .......
    /**
 *  here the code I dont know
     .........

     and then is the code I wrote to be executed if the pass and username haven't change
 */
    emriuser="user1";
    fkalimi="DThShI=0I";

    String p1 = pass1.getText();
       String u1 = uname1.getText();

    if (u1.equals(emriuser) && (p1.equals(fkalimi))){ 



  setVisible(false);
  f1 a=new f1 ();
        a.setTitle("Main Menu");
        a.pack();
        a.show();
                    }

谁能帮帮我,提前谢谢!

【问题讨论】:

  • 也许您想使用数据库。您还可以搜索文件的读写。

标签: java class variables jvm global-variables


【解决方案1】:

没有直接的方法来获取变量的值,因为当关闭应用程序时,Java-Runtime 被关闭,所有变量都被垃圾收集器从内存中删除。

要保存值,您必须将它们写入文件。
要么序列化整个对象,要么将其保存为 text/csv/json。
加载应用程序时,您可以再次加载这些值。

Serialize object

Write text to File

【讨论】:

【解决方案2】:

我想知道关闭程序后如何存储它们的值

没有单一的最佳方法可以做到这一点,但有很多选择。通常,您以后要检索的任何值 X 都要求您将 X 存储在 JVM 中运行的代码之外的某个位置。

以下是一些可能的一般存储值的方法(还有其他方法):

  • 一个数据库——将一个值写入数据库,然后再查询数据库。请注意,数据库可能与您的 JVM 位于同一台机器上,也可能是一些完全不同的主机。具体选项包括 MySQL、Postgres、Redis、Cassandra 等。
  • 文件系统——将值写入文件,稍后再读取文件。请注意,该文件可能存在于同一台计算机上,也可能存在于远程文件系统上(使用 NFS 或 NTFS 之类的东西)。
  • API 端点——您的代码对 API 进行 HTTP 调用以保存 X,然后再进行 API 调用以检索 X。请注意,这需要有人构建任何 API 并处理存储。 API 可能没有自己的持久存储,而是从运行内存中提供答案;或者 API 服务本身可以使用其他一些数据存储来读取/写入答案。
  • 一个库 - 您的代码调用库代码来保存 X,然后底层库会做一些事情来将 X 持久化到某个地方。

【讨论】:

    【解决方案3】:

    将变量设为全局变量不会在程序执行期间持久化;它只会让它们在更大的范围内可见。

    如果您需要将信息从一次执行保存到另一次执行,则需要将信息保存到硬盘驱动器,无论是直接将其写入文件还是写入数据库。这样,每次你的程序运行时,它都应该检查这个存储并检索数据。

    检查Hibernate,这是一个将 Java 对象映射到数据库的库。

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多