Est-il possible d'utiliser java.util.Préférences sous Windows sans l'aide du Registre, comme le backend?
Je veux utiliser le java.util.Préférences de l'API, mais je ne veux pas que mon programme pour tenter de lire ou d'écrire dans le registre Windows. Comment pourrais-je aller à ce sujet?
Parce que le Les préférences de l'API est de retour en fin d'neutre, vous n'avez pas de soins si les données sont stockées dans des fichiers, tables de base de données, ou une plate-forme de stockage tels que le Registre de Windows.
import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.prefs.AbstractPreferences;import java.util.prefs.BackingStoreException;/**
* Own implementation of the Java preferences API, that does not use
* a "OS backing store" but relies on importing and exporting the
* preferences via xml files.
* Also, If a preference is got, but was not in the tree, it is entered.
*/publicclassMyPreferencesextendsAbstractPreferences{privateMap<String,String> prefs =newHashMap<String,String>();privateMap<String,AbstractPreferences> children =newHashMap<String,AbstractPreferences>();publicMyPreferences(MyPreferences parent,String name){super(parent, name);}/**
* @see java.util.prefs.AbstractPreferences#putSpi(java.lang.String, java.lang.String)
*/protectedvoid putSpi(String key,String value){
prefs.put(key, value);}
Ou vous pouvez stocker ces préférences dans un LDAP:
import java.util.prefs.AbstractPreferences;import java.util.prefs.BackingStoreException;import javax.naming.NamingException;import javax.naming.directory.Attributes;import de.tarent.ldap.LDAPException;import de.tarent.ldap.LDAPManager;/**
* @author kirchner
*
* Preferences im LDAP
*/publicclassLDAPSystemPreferencesextendsAbstractPreferences{LDAPManager ldm =null;Properties properties =newProperties();//Map für key/value der PreferencesMap cache =newHashMap();//Map für timestamp der PreferencesMap timestamp =newHashMap();privateBoolean deleted =Boolean.FALSE;
Ou vous pouvez utiliser un simple fichier de propriétés:
com.adito.boot.PropertyPreferences:
import java.util.prefs.AbstractPreferences;import java.util.prefs.BackingStoreException;import java.util.prefs.Preferences;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/**
* A simple implementation for the preferences API. That stores preferences
* in propery files. We do not have to worry about sharing the preferencese
* with other JVM instance so there is no need for any kind of synchronising
* or locking.
*/publicclassPropertyPreferencesextendsAbstractPreferences{
De bonnes choses, merci. Notez que vous pouvez voir le PreferencesFactory pour être utilisée avec la propriété système Java "java.util.préf.PreferencesFactory". onjava.com/pub/a/onjava/synd/2001/10/17/j2se.html?page=2 Cool, Dans le temps, j'ai aussi trouvé un joli domaine public de la propriété de fichier de base de un ici: davidc.net/programming/java/... je me suis retrouvé à l'aide de cette parce que Mavericks semble avoir introduit une certaine étrangeté dans l'implémentation par défaut. J'ai trouvé le défaut de mémoire de sauvegarde de fichier dans $HOME/Library/Preferences/com.apple.java.util.préf.plist et bien que les binaires j'étais encore capable de chat. J'ai observé les données écrites par mon programme, puis l'observa disparaître à partir du fichier avec aucune autre interaction. Le magasin par défaut semble cassé sur OSX Mavericks.
Il est toujours possible de prolonger java.util.préf.AbstractPreferences.
Une autre solution pourrait être d'utiliser Le Package de Configuration de Apache Commons vous permet de lire et d'écrire des données de configuration à partir de/à différentes sources.
J'espère que vous avez lu le lecture/écriture de Registre de Windows à l'aide de Java et que vous voulez avoir un autre back-end que le registre lors de l'utilisation de la
java.util.Preferences
APIVous pouvez étendre la
Préférences
API, comme Bernhard ou Croft fait, comme décrit dans cet article:Exemples d'extensions par nouveau
Préférences
peut être vu ici.Qui est mieux, de l'OMI, de l'utilisation d'une autre API.
Par exemple, la recherche pour les classes de l'extension de
java.util.préf.AbstractPreferences
:de.unika.ipd.grgen.util.MyPreferences
de.tarent.ldap.préf.LDAPSystemPreferences
com.adito.boot.PropertyPreferences
:Cool, Dans le temps, j'ai aussi trouvé un joli domaine public de la propriété de fichier de base de un ici: davidc.net/programming/java/... je me suis retrouvé à l'aide de cette parce que Mavericks semble avoir introduit une certaine étrangeté dans l'implémentation par défaut. J'ai trouvé le défaut de mémoire de sauvegarde de fichier dans $HOME/Library/Preferences/com.apple.java.util.préf.plist et bien que les binaires j'étais encore capable de chat. J'ai observé les données écrites par mon programme, puis l'observa disparaître à partir du fichier avec aucune autre interaction. Le magasin par défaut semble cassé sur OSX Mavericks.
OriginalL'auteur VonC
Il est toujours possible de prolonger java.util.préf.AbstractPreferences.
Une autre solution pourrait être d'utiliser Le Package de Configuration de Apache Commons vous permet de lire et d'écrire des données de configuration à partir de/à différentes sources.
OriginalL'auteur Ruben