I want my java desktop application to know if the user is running it for the first time on that pc. Since the jar-file might be shared between users i don't want to write to a file inside the jar-file. There are obviously a lot of ways to do this but what would you recommend? (It has to be cross-platform). thanks
Asked
Active
Viewed 1,072 times
3 Answers
7
I would recommend using the users home directory where you can place a user specific settings file. This will allow you to detect first time users as well as remember any preferences they may choose.
System.getProperty("user.home"); // returns the home directory cross platform

Neil Essy
- 3,607
- 1
- 19
- 23
-
This is an effective solution off course, maybe not very beautiful in this case though, because there are no user specific settings needed. Sure the app could place an empty file in the home directory (if the file exists it's not a first time user), but the user might get annoyed with such a file in the home folder and delete it. – l.lukian Nov 29 '11 at 19:55
4
Try to use Preferences and its systemRoot() or userRoot() methods to obtain system-wide or user-specific preferences.

szhem
- 4,672
- 2
- 18
- 30
-
This seems really neat, but maybe a bit dangerous? the system/user preferences can easily get cleared by another application or manually by the user, right? (perhaps that is very uncommon though..?) – l.lukian Nov 29 '11 at 19:29
-
As with any other solution preferences can be changed by the user/application that have permissions to do it. If you have to prevent conflicts between preferences of different applications, consider using [systemNodeForPackage(Class)](http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#systemNodeForPackage%28java.lang.Class%29) or [userNodeForPackage(Class)](http://docs.oracle.com/javase/6/docs/api/java/util/prefs/Preferences.html#userNodeForPackage%28java.lang.Class%29) methods. – szhem Nov 29 '11 at 19:51
-
[Here](http://mindprod.com/jgloss/preferences.html#LOCATION) is also some information about where the preferences are typically stored in different systems. And [here](http://java.sun.com/developer/technicalArticles/releases/preferences/) is a rather old but useful technical article about `Preferences`. – szhem Nov 29 '11 at 19:54
-
Thanks a lot for these answers, didn't know about Preferences before and it seems great. – l.lukian Nov 30 '11 at 00:54
0
Every OS has some specific directories where the user data is stored (/home
, C:\Users
, C:\Documents and settings
). This value is usually available in the JVM with the "user.home" System property.
Store there some file to store your user configuration. Of course, each OS has its way of doing that ("Application Data" folder, folder with a name that begins with a dot), you should be sure that you comply with it.

SJuan76
- 24,532
- 6
- 47
- 87