Как сохранить значение переменной после закрытия программы в java - PullRequest
0 голосов
/ 12 января 2020

Я сделал программу, которая начинается с формы входа в систему. Я хочу поставить опцию для изменения пароля и имени пользователя, но после закрытия программы и при повторном ее открытии эти переменные получают значение по умолчанию. Это код изменения класса, где username - это глобальная переменная с именем «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();
                    }

Может кто-нибудь помочь мне, пожалуйста, спасибо заранее!

Ответы [ 3 ]

2 голосов
/ 12 января 2020

Нет прямого способа получить значение переменных, потому что при закрытии приложения Java -Runtime закрывается и все переменные удаляются из памяти сборщиком мусора.

Для сохранения Значения вы должны записать их в файл.
Либо вы сериализуете весь объект, либо сохраняете его как текст / csv / json.
При загрузке приложения вы можете загрузить эти значения снова.

Сериализация объекта

Запись текста в файл

1 голос
/ 13 января 2020

Я хочу знать, как сохранить их значение после закрытия программы

Нет лучшего способа сделать это, но есть много вариантов. В целом, любое значение X, которое вы хотите получить позже, требует, чтобы вы хранили X где-то вне вашего кода, работающего в JVM.

Вот несколько возможных общих способов хранения значения (есть и другие) :

  • база данных - записать значение в базу данных, а затем запросить базу данных позже. Обратите внимание, что база данных может присутствовать на той же машине, что и ваша JVM, или это может быть совершенно другой хост. Конкретные параметры включают MySQL, Postgres, Redis, Cassandra и др. c.
  • файловую систему - записать значение в файл, прочитать файл позже. Обратите внимание, что файл может присутствовать на том же компьютере или в удаленной файловой системе (используя что-то вроде NFS или NTFS).
  • конечная точка API - ваш код выполняет HTTP-вызов API для сохранения X, затем позже сделайте вызов API, чтобы получить X. Обратите внимание, что для этого требуется, чтобы кто-то создал любой API и имел дело с хранилищем. Вполне возможно, что API не имеет собственного постоянного хранилища, а обслуживает ответы из запущенной памяти; или служба API сама может использовать другое хранилище данных для чтения / записи ответов.
  • библиотека - ваши коды вызывают библиотечный код для сохранения X, а затем библиотека под обложками делает что-то для сохранения X где-то.
0 голосов
/ 12 января 2020

Создание глобальных переменных не сохранит их при выполнении программы; это только делает их видимыми в большем объеме.

Если вам нужно сохранить информацию от одного исполнения к другому, вам нужно сохранить информацию на жестком диске, будь то запись ее непосредственно в файл или в базу данных. Таким образом, каждый раз, когда ваша программа запускается, она должна проверить это хранилище и извлечь данные.

Проверка Hibernate , библиотека для сопоставления Java объектов с базой данных.

...