هل هناك طريقة لاستخدام java.util.Preferences ضمن Windows دون استخدام السجل كواجهة خلفية؟

StackOverflow https://stackoverflow.com/questions/208231

سؤال

أريد استخدام java.util.Preferences API ولكن لا أريد أن يحاول برنامجي القراءة أو الكتابة في سجل Windows.كيف سأفعل هذا؟

هل كانت مفيدة؟

المحلول

أنا على ثقة أنك قد قرأت القراءة/الكتابة إلى سجل Windows باستخدام Java وتريد بعد ذلك الحصول على واجهة خلفية أخرى غير السجل عند استخدام java.util.Preferences واجهة برمجة التطبيقات

يمكنك تمديد Preference واجهة برمجة التطبيقات, ، يحب برنهارد أو حقل صغير مسور فعلت، كما هو موضح في هذا المقال:

بسبب ال واجهة برمجة التطبيقات للتفضيلات نظرًا لأنه محايد من الناحية الخلفية، فلا داعي للقلق بشأن ما إذا كانت البيانات مخزنة في ملفات أو جداول قاعدة بيانات أو مساحة تخزين خاصة بالنظام الأساسي مثل سجل Windows.

أمثلة على الامتدادات من خلال جديد Preferences يمكن رؤيته هنا.

هذا أفضل يا IMO من استخدام واجهة برمجة تطبيقات أخرى.


على سبيل المثال، البحث عن فئات تمتد java.util.prefs.AbstractPreferences:

  • يمكنك استخدام مخزن التفضيلات المدعوم بملف XML:

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);
  }

  • أو يمكنك تخزين هذه التفضيلات في 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 {

نصائح أخرى

ومن الممكن دائما لتوسيع java.util.prefs.AbstractPreferences.

وبديل يمكن أن يكون لاستخدام و تكوين حزمة العموم أباتشي يسمح لك القراءة والكتابة بيانات التكوين من / إلى مصادر مختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top