2012-07-21 54 views
0

我創建了一個類變量如下如何在程序停止後在布爾值中保持特定值?

private boolean xyz = false; 

我打電話說會做一些東西,然後布爾變量的值更改爲true的方法,它之後。

現在下一次當我重新運行代碼時,布爾值不會保持爲true,它將返回false。

即使關閉我的程序然後再運行它,我也希望它保持爲真。

回答

6

即使關閉我的程序然後再運行它,我也希望它保持爲真。

那麼,這意味着你需要堅持到某個地方。

選項包括:

  • 某處在線
  • 數據庫
  • 通過Preferences API
  • 在一個衆所周知的位置簡單的文件用戶的喜好

基本上,你需要將數據寫出某處,重新啓動它。沒有更多的上下文,很難給出更具體的建議。

+0

我目前有兩種方法Method1和Method2。我有另一段調用這兩種方法的代碼。邏輯是,如果布爾值爲False,則將調用Method1,然後將布爾值設置爲True。 現在,當我重新運行代碼的布爾值,如果false,所以方法1每次調用! 所以下次我運行代碼時,布爾值應該爲true,Method2應該被調用。 因此Method1將只被調用一次。 – Nisarg 2012-07-21 21:08:33

+0

@Nisarg:是的,如果你在一個新的過程中重新運行,而這個過程沒有在我的答案中做過任何事情,那麼你將會「忘記」結果。這就是爲什麼我給出了我所做的答案。 – 2012-07-21 21:56:49

+0

好的。我會嘗試通過您的建議之一的選項!非常感謝您的幫助.. – Nisarg 2012-07-21 23:04:31

0

當您退出程序時,請使用下面的方法將變量保存到您自己的位置(最好是本地目錄)的文件中。它被稱爲系列化

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; 
     } 

您也可能想要檢查文件是否是先前創建的,否則您將捕獲IOException。你可以通過創建一個名爲xyz.ser的File對象並調用exists()來完成。

+0

哦歡呼隊友!生病嘗試...非常感謝您的幫助! – Nisarg 2012-07-21 21:14:58

+0

不客氣。讓我知道它是否有效。 – Erol 2012-07-21 21:22:35

+0

那麼如果該文件存在。我的意思是當我第二次運行程序時,該文件已經存在,因此file.exists()== True。那麼我應該怎麼做,我還應該創建fileoutputstream和objectoutputstream對象? – Nisarg 2012-07-22 12:37:29