我創建了一個類變量如下如何在程序停止後在布爾值中保持特定值?
private boolean xyz = false;
我打電話說會做一些東西,然後布爾變量的值更改爲true
的方法,它之後。
現在下一次當我重新運行代碼時,布爾值不會保持爲true,它將返回false。
即使關閉我的程序然後再運行它,我也希望它保持爲真。
我創建了一個類變量如下如何在程序停止後在布爾值中保持特定值?
private boolean xyz = false;
我打電話說會做一些東西,然後布爾變量的值更改爲true
的方法,它之後。
現在下一次當我重新運行代碼時,布爾值不會保持爲true,它將返回false。
即使關閉我的程序然後再運行它,我也希望它保持爲真。
即使關閉我的程序然後再運行它,我也希望它保持爲真。
那麼,這意味着你需要堅持到某個地方。
選項包括:
Preferences
API基本上,你需要將數據寫出某處,重新啓動它。沒有更多的上下文,很難給出更具體的建議。
當您退出程序時,請使用下面的方法將變量保存到您自己的位置(最好是本地目錄)的文件中。它被稱爲系列化。
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()來完成。
我目前有兩種方法Method1和Method2。我有另一段調用這兩種方法的代碼。邏輯是,如果布爾值爲False,則將調用Method1,然後將布爾值設置爲True。 現在,當我重新運行代碼的布爾值,如果false,所以方法1每次調用! 所以下次我運行代碼時,布爾值應該爲true,Method2應該被調用。 因此Method1將只被調用一次。 – Nisarg 2012-07-21 21:08:33
@Nisarg:是的,如果你在一個新的過程中重新運行,而這個過程沒有在我的答案中做過任何事情,那麼你將會「忘記」結果。這就是爲什麼我給出了我所做的答案。 – 2012-07-21 21:56:49
好的。我會嘗試通過您的建議之一的選項!非常感謝您的幫助.. – Nisarg 2012-07-21 23:04:31