问题
Mac OS X and iOS have a nice little class called NSUserDefaults. It's a singleton that lets you store strings, arrays, and primitives, and you can always implement some methods to add custom objects to it. It's super useful when you need to store a quick setting without dealing with file manipulations (for example, storing the last picked font name).
Does Java have something simple like this? I'd like to be able to store a user's last settings to reload a similar state when the program reloads, but I'm not sure what the best way to do this is in Java.
回答1:
Yes, you can use the java.util.prefs API. How do I save preference user settings in Java? and What is the best way to save user settings in java application? have some helpful info. To get you started:
[[NSUserDefaults standardUserDefaults] setString:@"some string" forKey:@"some_key"];
becomes
Preferences prefs = Preferences.userNodeForPackage(this);
prefs.put("some_key", "some string");
and
[[NSUserDefaults standardUserDefaults] stringForKey:@"some_key"];
becomes
Preferences prefs = Preferences.userNodeForPackage(this);
prefs.get("some_key");
回答2:
No. The closest thing is the property file system. You can have a property file (which is a key-value file). Generally, they need to be in the classpath of the java program you're running. You can also create property files (or xml files) anywhere you want to in the file system (like a known good place). NSUserDefaults uses something like a p-list stored somewhere in the your home directory's Library, using a standard naming an directory path. You would have to come up with your own standard in Java.
来源:https://stackoverflow.com/questions/11380812/does-java-have-something-similar-to-cocoas-nsuserdefaults