2011-11-29 225 views
5

我想讓我的java桌面應用程序知道用戶是否第一次在該pc上運行它。由於jar文件可能會在用戶之間共享,我不想寫入jar文件中的文件。 顯然有很多方法可以做到這一點,但你會推薦什麼? (它必須是跨平臺的)。謝謝在java應用程序中檢測到第一次用戶

回答

4

嘗試使用Preferences及其systemRoot()userRoot()方法來獲取系統範圍或用戶特定的偏好。

+0

這似乎很整潔,但也許有點危險?系統/用戶首選項可以很容易地被另一個應用程序清除或由用戶手動清除,對吧? (雖然這可能很少見?) –

+0

與任何其他解決方案一樣,可以由有權執行此操作的用戶/應用程序更改首選項。如果您必須防止不同應用程序的首選項之間發生衝突,請考慮使用[systemNodeForPackage(Class)](http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#systemNodeForPackage %28java.lang.Class%29)或[userNodeForPackage(Class)](http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#userNodeForPackage%28java.lang .Class%29)方法。 – szhem

+0

[這裏](http://mindprod.com/jgloss/preferences.html#LOCATION)也是關於首選項通常存儲在不同系統中的一些信息。 [這裏](http://java.sun.com/developer/technicalArticles/releases/preferences/)是一個相當古老但有用的關於'Preferences'的技術文章。 – szhem

7

我會建議使用用戶主目錄您可以在其中放置用戶特定的設置文件。這將允許您檢測第一次使用的用戶,並記住他們可能選擇的任何偏好。

System.getProperty("user.home"); // returns the home directory cross platform 
+0

這是一個非常有效的解決方案,但在這種情況下可能不是非常漂亮,因爲沒有用戶需要的特定設置。確定應用程序可以在主目錄中放置一個空文件(如果該文件存在,它不是第一次使用的用戶),但用戶可能會對主文件夾中的這樣的文件感到惱火併將其刪除。 –

0

每個OS具有在用戶的數據被存儲一些特定的目錄(/homeC:\UsersC:\Documents and settings)。該值通常在具有「user.home」系統屬性的JVM中可用。

存儲一些文件來存儲您的用戶配置。當然,每個操作系統都有自己的方式(「應用程序數據」文件夾,名稱以點開頭的文件夾),您應該確保遵守它。

相關問題