2015-02-05 52 views
-3

如何在程序中保存變量的值,然後在下次程序運行時重新使用它?我不想用文件寫入/讀取來完成它。如何保存上次會話的變量值(程序退出)

+5

「*我不想用文件寫入/讀取*」我們可以知道原因嗎?你的問題看起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – Pshemo 2015-02-05 16:57:54

+0

'不想用文件寫入/讀取'使用數據庫?但你爲什麼要這樣做? – 2015-02-05 16:58:11

+0

相關:[保持Python腳本運行之間的內存中的持久變量](http://stackoverflow.com/questions/6687660/keep-persistent-variables-in-memory-between-runs-of-python-script) – Christian 2015-02-05 16:58:32

回答

4

使用Java Preferences API

import java.util.prefs.*; 

public class Example { 
    // Preference key 
    private static final String FRUIT = "fruit"; 

    public void savePreference(String favoriteFruit) { 
     Preferences prefs = Preferences.userNodeForPackage(Example.class); 

     prefs.put(FRUIT, favoriteFruit); 
    } 

    public String readPreference() { 
     Preferences prefs = Preferences.userNodeForPackage(Example.class); 

     return prefs.get(FRUIT, "default"); 
    } 
} 

數據是基於您的類的完全限定名稱存儲的,因此您的包名和類名是相關的。從documentation for the Preferences class

此類允許應用程序存儲和檢索用戶和系統首選項和配置數據。這些數據永久存儲在一個依賴於實現的後臺存儲中。典型的實現包括平面文件,特定於操作系統的註冊表,目錄服務器和SQL數據庫。這個類的用戶不需要關心後備存儲的細節。

0

您可以使用內存中的鍵值存儲(如Redis)或內存數據庫(如H2)。但是這可能會根據您的需要矯枉過正。

+0

有趣的想法,但是當我們重新啓動我們的機器時它也會工作(只是問,因爲我從來沒有使用這些工具,這種情況似乎相當重要)? – Pshemo 2015-02-05 17:07:15

+0

內存數據庫如何在重新啓動後存活? – 2015-02-05 17:09:54

+0

@Pshemo它不會,因爲您只是將它寫入內存,並且在重啓機器時內存將被擦除。但是,您可以將Redis託管在不重新啓動並寫入該服務器的其他服務器上。 – 2015-02-05 17:10:47

1

可以使用java.util.prefs.Preferences存儲設置。對於兩個目標組:通常是用戶設置,不太經常使用應用程序/系統設置。他們可以使用平臺設置,就像在Windows下一樣。

然而,也有可能將設置存儲爲XML,這是一種更簡潔的方式,因爲它不會觸及可能受保護的Windows註冊表。然後,一個慣用的位置將位於目錄System.getProperty("user.home")下的「.myapp」目錄中。