Tôi muốn sử dụng API java.util.Preferences nhưng tôi không muốn chương trình của mình cố gắng đọc hoặc ghi vào sổ đăng ký Windows. Làm thế nào tôi sẽ đi về điều này?Có cách nào để sử dụng java.util.Preferences trong Windows mà không sử dụng Registry làm chương trình phụ trợ không?
Trả lời
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 {
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.
- 1. sử dụng chương trình phụ trợ tương tác và không tương tác trong một chương trình
- 2. Sử dụng Google Analytics từ chương trình phụ trợ
- 3. Làm cách nào để buộc Tor sử dụng danh tính mới mà không sử dụng Vidalia?
- 4. Sử dụng Joda DateTime trên chương trình phụ trợ, làm cách nào để chuyển đổi sang đối tượng Ngày JavaScript?
- 5. Sử dụng đơn RMI Registry
- 6. Làm cách nào để sử dụng dll C# (được quản lý) mà tôi không có?
- 7. Làm cách nào để sử dụng trình gỡ lỗi gdb MinGW để gỡ lỗi chương trình C++ trong Windows?
- 8. Có cách nào để xem mức sử dụng CPU trên mỗi lõi mà một quá trình đang sử dụng không?
- 9. Làm cách nào để lấy dấu vết ngăn xếp trên Windows mà không sử dụng dbghelp.dll?
- 10. Làm cách nào tôi có thể thực hiện tìm kiếm theo chương trình mà không cần sử dụng API?
- 11. Làm cách nào để sử dụng điều khiển Đăng nhập ASP.NET mà không sử dụng MembershipProvider?
- 12. Làm cách nào để tạo chương trình C# mà không có GUI?
- 13. Có cách nào khác để sử dụng LIMIT trong truy vấn phụ trong MySQL không?
- 14. Làm cách nào để có ứng dụng Android gốc xác thực với chương trình phụ trợ trên web?
- 15. Có Windows Registry "từ điển" giải thích toàn bộ (hoặc hầu hết) Windows Registry không?
- 16. DwmIsCompositionEnabled có còn được sử dụng trong Windows 8 không?
- 17. Có thể sử dụng Xtext mà không có nhật thực?
- 18. Sử dụng Devel :: NYTProf trên chương trình mà fork/execs
- 19. Có thể sử dụng Google App Engine làm cơ sở dữ liệu phụ trợ cho các ứng dụng Android không?
- 20. Làm cách nào để sử dụng SED mà không có tệp có biến env?
- 21. Làm cách nào để triển khai biểu mẫu nhập html mà không có phần phụ trợ
- 22. Có thành phần trình duyệt web nào để sử dụng trong ứng dụng FireMonkey không?
- 23. Làm cách nào tôi có thể khẳng định() mà không sử dụng hủy bỏ()?
- 24. Sử dụng telnet trong Chương trình C
- 25. Có thể sử dụng API GHC để sửa đổi chương trình trong khi biên dịch chương trình không?
- 26. Làm cách nào để biết quy trình nào đang sử dụng tệp dưới Java trong Windows?
- 27. Làm thế nào tôi có thể biên dịch và chạy chương trình C# mà không sử dụng studio trực quan?
- 28. Sử dụng ZeroMQ trong ứng dụng web: cách lối vào tương tác với phần phụ trợ
- 29. Sử dụng Resultet trong Chương trình Java
- 30. Viết một ứng dụng web với "không có phụ trợ"
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
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