2008-10-16 16 views
15

मैं java.util.Preferences API का उपयोग करना चाहता हूं लेकिन मैं नहीं चाहता कि मेरा प्रोग्राम विंडोज रजिस्ट्री को पढ़ने या लिखने का प्रयास करे। मैं इसे किस तरह लूं?क्या रजिस्ट्री का उपयोग बैकएंड के रूप में जावा के तहत java.util.Preferences का उपयोग करने का कोई तरीका है?

उत्तर

11

मुझे विश्वास आप read/write to Windows Registry using Java पढ़ लिया है और आप फिर जब java.util.Preferences एपीआई

का उपयोग कर आप Preference API किया this article में वर्णित के रूप का विस्तार कर सकता है, Bernhard या Croft की तरह, रजिस्ट्री की तुलना में एक और पीछे के अंत करना चाहते हैं:

क्योंकि Preferences API बैक-एंड तटस्थ है, तो आप परवाह नहीं की जरूरत है कि क्या इस तरह के डेटा Windows रजिस्ट्री के रूप में फाइल, डेटाबेस तालिकाओं, या एक प्लेटफ़ॉर्म-विशिष्ट भंडारण में संग्रहीत हैं।

new Preferences can be seen here के माध्यम से एक्सटेंशन के उदाहरण।

यह एक और एपीआई का उपयोग करने के बजाय बेहतर है, आईएमओ।


उदाहरण के लिए, वर्गों के लिए खोज java.util.prefs.AbstractPreferences विस्तार:

de.unika.ipd.grgen.util.MyPreferences

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. 
*/ 
public class MyPreferences extends AbstractPreferences { 

    private Map<String, String> prefs = new HashMap<String, String>(); 
    private Map<String, AbstractPreferences> children = new HashMap<String, AbstractPreferences>(); 

    public MyPreferences(MyPreferences parent, String name) { 
    super(parent, name); 
    } 

    /** 
    * @see java.util.prefs.AbstractPreferences#putSpi(java.lang.String, java.lang.String) 
    */ 
    protected void putSpi(String key, String value) { 
    prefs.put(key, value); 
    } 
:

  • आप एक प्राथमिकता दुकान एक XML फ़ाइल का समर्थन प्राप्त उपयोग कर सकते हैं
    • या आप एक LDAP में उन वरीयताओं को स्टोर कर सकते हैं:

    de.tarent.ldap.prefs.LDAPSystemPreferences

    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 
    */ 
    public class LDAPSystemPreferences extends AbstractPreferences { 
        LDAPManager  ldm   = null; 
        Properties  properties = new Properties(); 
        //Map für key/value der Preferences 
        Map    cache  = new HashMap(); 
        //Map für timestamp der Preferences 
        Map    timestamp = new HashMap(); 
        private Boolean deleted  = Boolean.FALSE; 
    

    • या आप एक सरल संपत्ति फ़ाइल का उपयोग कर सकते हैं:

    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. 
    */ 
    public class PropertyPreferences extends AbstractPreferences { 
    
+0

अच्छी चीजें, धन्यवाद। ध्यान दें कि आप जावा सिस्टम प्रॉपर्टी "java.util.prefs.PreferencesFactory" के साथ उपयोग करने के लिए PreferencesFactory को देख सकते हैं। http://www.onjava.com/pub/a/onjava/synd/2001/10/17/j2se.html?page=2 – Epaga

+0

कूल, इस बीच में मुझे एक अच्छी सार्वजनिक डोमेन प्रॉपर्टी फ़ाइल भी मिली, यहां एक आधारित : http://www.davidc.net/programming/java/java-preferences-using-file-backing-store मैं इसका उपयोग करके घायल हो गया क्योंकि मैवरिक्स ने डिफ़ॉल्ट कार्यान्वयन में कुछ अजीबता पेश की है।मुझे $ HOME/लाइब्रेरी/प्राथमिकता/com.apple.java.util.prefs.plist में डिफ़ॉल्ट बैकिंग स्टोर फ़ाइल मिली और हालांकि बाइनरी मैं अभी भी बिल्ली को सक्षम करने में सक्षम था। मैंने अपने कार्यक्रम द्वारा लिखे गए आंकड़ों को देखा, और फिर यह फ़ाइल से गायब हो गया और बिना किसी बातचीत के। ओएसएक्स मैवरिक्स पर डिफ़ॉल्ट स्टोर टूटा हुआ लगता है। – Gus

2

java.util.prefs.AbstractPreferences का विस्तार करना हमेशा संभव है।

अपाचे कॉमन्स के Configuration package का उपयोग करने के लिए एक विकल्प का उपयोग किया जा सकता है, जिससे आप विभिन्न स्रोतों से कॉन्फ़िगरेशन डेटा को पढ़ने और लिखने की अनुमति देते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे