Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / April 2007

Tip: Looking for answers? Try searching our database.

Save user data where?

Thread view: 
Karsten Wutzke - 18 Apr 2007 18:07 GMT
Hi all!

I wish to save some user data (editable via GUI) on a per user basis.

Is there any nice mechanism in Java that puts such info into an
appropriate place? If I have to do that manually, what would be a nice
place to save some small files with bothering the user? Or shall I
force every user to specify a directory?

Karsten
Knute Johnson - 18 Apr 2007 18:19 GMT
> Hi all!
>
[quoted text clipped - 6 lines]
>
> Karsten

Look at the system property user.home.

Signature

Knute Johnson
email s/nospam/knute/

Karsten Wutzke - 18 Apr 2007 18:36 GMT
On 18 Apr., 19:19, Knute Johnson <nos...@rabbitbrush.frazmtn.com>
wrote:
> > Hi all!
>
[quoted text clipped - 13 lines]
> Knute Johnson
> email s/nospam/knute/

I know this. But I don't want to create files or directories "unasked"
which will clutter the user's home dir and make some users really mad
(as I would be).

Karsten
Knute Johnson - 18 Apr 2007 23:28 GMT
> On 18 Apr., 19:19, Knute Johnson <nos...@rabbitbrush.frazmtn.com>
> wrote:
[quoted text clipped - 17 lines]
>
> Karsten

Then store it on a remote server.  I really don't think that makes any
sense but it accomplishes what you want; a file but not on the users
computer.

When I look in my Windoze computer home directory I can find 25 folders
of stuff that applications have put there.  That is where that kind of
stuff belongs.  I didn't look at my Linux home directory but I know
there is a lot of application data there too.

Signature

Knute Johnson
email s/nospam/knute/

Thomas Fritsch - 18 Apr 2007 18:36 GMT
Karsten Wutzke schrieb:
> I wish to save some user data (editable via GUI) on a per user basis.
>
> Is there any nice mechanism in Java that puts such info into an
> appropriate place? If I have to do that manually, what would be a nice
> place to save some small files with bothering the user? Or shall I
> force every user to specify a directory?

Sounds like you need java.util.prefs.Preferences.

You can get a handle to the user's preferences by:
  Preferences prefs =
     Preferences.userNodeForPackage(my.package.Main.class);
Java keeps the user's preferences in a platform-specific place:
 (*) for Windows: in a certain user-specific branch of the registry
 (*) for Unix/Linux: in a certain hidden file in the user's home dir.
But you don't have to care about those details.

You read/write specific key/value like this:
  String value = prefs.get(key);
  prefs.get(key, value);

For more details see the API docs
<http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/Preferences.html>
<http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/Preferences.html#userNod
eForPackage(java.lang.Class
)>

Signature

Thomas

Jason Cavett - 18 Apr 2007 22:36 GMT
On Apr 18, 1:36 pm, Thomas Fritsch <i.dont.like.s...@invalid.com>
wrote:
> Karsten Wutzke schrieb:
>
[quoted text clipped - 25 lines]
> --
> Thomas

There wouldn't be any problem with permissions using this method,
would there?  (AKA - The user can't write to the registry.)
angrybaldguy@gmail.com - 18 Apr 2007 22:53 GMT
> > Sounds like you need java.util.prefs.Preferences.
> >
[quoted text clipped - 16 lines]
> There wouldn't be any problem with permissions using this method,
> would there?  (AKA - The user can't write to the registry.)

The default Sun implementation on Windows stores preferences in a node
under HKEY_CURRENT_USER, which is always writable by the current user
and is normally made part of the user's profile, whether local or
roaming.

So no, not really.
Jason Cavett - 19 Apr 2007 04:43 GMT
On Apr 18, 5:53 pm, angrybald...@gmail.com wrote:

> > > Sounds like you need java.util.prefs.Preferences.
>
[quoted text clipped - 23 lines]
>
> So no, not really.

By "normally" do you mean that, assuming no problems, I can assume the
settings will be saved on a per-user basis?
Brandon McCombs - 20 Apr 2007 01:36 GMT
> On Apr 18, 5:53 pm, angrybald...@gmail.com wrote:
>>
[quoted text clipped - 23 lines]
> By "normally" do you mean that, assuming no problems, I can assume the
> settings will be saved on a per-user basis?

Yes because for one thing the registry hive where the data is accessible
for the current user is HKEY_CURRENT_USER (imagine that) so it would
have to be on a per user basis because there is only one current user
allowed with Windows XP. Plus, if you look into HKEY_USERS hive in the
registry it will list all the SIDs of the users who have logged into the
PC whose registry you are currently viewing. A user's registry data is
part of the users profile so it will follow them (stored in ntuser.dat
in every user's profile) and when they log in the HKEY_CURRENT_USER hive
is just a link to the real location under HKEY_USERS.  It is possible
for permissions to be screwed up on HKEY_CURRENT_USER such that a user
can't retain settings (like Windows Explorer folder view preferences)
but normally each user can read/write to that location because they need
to.

I use the Preferences API in my program to store connection settings to
a remote server in the registry for each other based on a recommendation
I received from this group a few months ago. The API is so easy and
after I experimented with it I was able to implement my code very quickly.
Jason Cavett - 20 Apr 2007 17:20 GMT
> > On Apr 18, 5:53 pm, angrybald...@gmail.com wrote:
>
[quoted text clipped - 44 lines]
>
> - Show quoted text -

I just finished implementing Preferences for an application I'm
working on.  Wow...haha...that was so painless I felt like I did
something wrong.

;-)  Loving the Preferences.
Knute Johnson - 18 Apr 2007 23:31 GMT
> Karsten Wutzke schrieb:
>> I wish to save some user data (editable via GUI) on a per user basis.
[quoted text clipped - 21 lines]
> <http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/Preferences.html>
> <http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/Preferences.html#userNod
eForPackage(java.lang.Class
)>

I hadn't seen this before (where have I been?).  Where does it store
stuff on a Linux system?

Signature

Knute Johnson
email s/nospam/knute/

Thomas Fritsch - 19 Apr 2007 11:03 GMT
>>   Preferences prefs =
>>      Preferences.userNodeForPackage(my.package.Main.class);
[quoted text clipped - 5 lines]
> I hadn't seen this before (where have I been?).  Where does it store
> stuff on a Linux system?

On my Linux I found it in file
 $HOME/.java/.userprefs/my/package/prefs.xml

And (by the way) on Windows it is in registry section
 HKEY_CURRENT_USER\Software\JavaSoft\prefs\my\package

Signature

Thomas

Thomas Fritsch - 19 Apr 2007 14:18 GMT
> On my Linux I found it in file
>   $HOME/.java/.userprefs/my/package/prefs.xml
    $HOME/.java/.userPrefs/my/package/prefs.xml

> And (by the way) on Windows it is in registry section
>   HKEY_CURRENT_USER\Software\JavaSoft\prefs\my\package
    HKEY_CURRENT_USER\Software\JavaSoft\Prefs\my\package

Sorry for the 2 typos...

Signature

Thomas

Knute Johnson - 19 Apr 2007 17:46 GMT
>> On my Linux I found it in file
>>   $HOME/.java/.userprefs/my/package/prefs.xml
[quoted text clipped - 5 lines]
>
> Sorry for the 2 typos...

Thanks Thomas.

Signature

Knute Johnson
email s/nospam/knute/



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.