2008-10-16 26 views

Trả lời

11

tôi tin tưởng bạn đã đọc read/write to Windows Registry using Java và sau đó bạn muốn có một back-end so với đăng ký khi sử dụng java.util.Preferences API

Bạn có thể kéo dài tuổi Preference API, như Bernhard hoặc Croft đã làm, như mô tả trong this article:

Bởi vì Preferences API là back-end trung tính, bạn không cần quan tâm liệu dữ liệu được lưu trữ trong tệp, bảng cơ sở dữ liệu hay bộ nhớ nền tảng cụ thể như Windows Registry.

Ví dụ về tiện ích mở rộng thông qua new Preferences can be seen here.

Điều đó tốt hơn, IMO, hơn là sử dụng một API khác.


Ví dụ, tìm kiếm cho các lớp học mở rộng java.util.prefs.AbstractPreferences:

  • Bạn có thể sử dụng một cửa hàng ưu tiên được hỗ trợ bởi một tập tin 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); 
    } 

  • Hoặc bạn có thể lưu trữ những sở thích trong một 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; 

  • Hoặc bạn có thể sử dụng một tập tin bất động sản đơn giản:

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

Công cụ tốt, cảm ơn. Lưu ý rằng bạn có thể sử dụng PreferencesFactory để sử dụng với thuộc tính hệ thống Java "java.util.prefs.PreferencesFactory". http://www.onjava.com/pub/a/onjava/synd/2001/10/17/j2se.html?page=2 – Epaga

+0

Tuyệt vời, Trong thời gian đó, tôi cũng tìm thấy một tệp thuộc tính miền công cộng tốt đẹp dựa trên một tệp tại đây : http://www.davidc.net/programming/java/java-preferences-using-file-backing-store Tôi sử dụng điều này vì Mavericks dường như đã giới thiệu một số điều kỳ quặc trong việc thực hiện mặc định.Tôi tìm thấy tệp lưu trữ sao lưu mặc định trong $ HOME/Library/Preferences/com.apple.java.util.prefs.plist và mặc dù nhị phân tôi vẫn có thể sử dụng nó. Tôi quan sát dữ liệu được viết bởi chương trình của tôi, và sau đó quan sát nó biến mất khỏi tập tin mà không có sự tương tác nào khác. Cửa hàng mặc định có vẻ bị hỏng trên OSX Mavericks. – Gus

2

Bạn luôn có thể mở rộng java.util.prefs.AbstractPreferences.

Cách khác có thể là sử dụng số Configuration package của Apache Commons cho phép bạn đọc và ghi dữ liệu cấu hình từ/đến các nguồn khác nhau.

Các vấn đề liên quan