【JAVA学习笔记】个人设定

简介:
1.简介:  
以前你想让程序记住用户自定义的习惯,比如界面字体等,你使用一个配置文件,但是在维护多个用户或出现误拼写时还是力不从心。而java.util.prefs包则提供了便利。在线文档写的非常糟糕,将java.util.prefs这个类描述为“a node in a hierarchical collection of preference data”,还说“there are two separate trees of preference nodes, one for user preferences and one for system preferences.” 
这个其实没有那么抽象。 
2.使用:  
创建Preferences对象的方法是使用静态方法userNodeForPackage()。这个方法要求有一个类对象(通过getClass()方法得到)作为它唯一的参数,系统以便确定某个类是驻留在某个包上的,它返回Preferences对象,这个对象可以从那个包中返回用户设定的偏好信息。由于所有程序一般都使用它们自己的包名,这样references对象间就不会冲突了。userNodeForPackage()方法对每个用户返回不同的Preferences对象,因此同一个程序的不同用户也不会冲突。 
偏好信息是以键值对的形式存储的,存储偏好设定使用put()方法,取出偏好设定使用get()方法,使用时需要有一个默认值提供。针对int的putInt方法也可以使用。相似的, 
    * boolean - putBoolean() and getBoolean() 
    * long - putLong() and getLong() 
    * float - putFloat() and getFloat() 
    * double - putDouble() and getDouble()) 
clear()则清除这个键值对。 
3.举例:  
import java.util.prefs.*; 
/** 
  * Simple demonstration of the most common usage of the Java 
  * Preferences API using the user and package based storage 
  * node. This app uses the user tree to avoid collisions with 
  * other users and uses the package name, as is conventional, 
  * to avoid collisions with other applications in other packages. 
  * 
  * This is a simple command-line application. It stores only one 
  * key/value pair, in which key is the string "PrefsValue". 
  * 
  * Argument 1 may be either "get", "clear", or "put". 
  * 
  * If "get", the value stored under the key "PrefsValue" is 
  * fetched and displayed. 
  * 
  * If "clear", all prefs items for this package are cleared. 
  * 
  * If "put", the second command-line argument provides the value 
  * to be stored. If the second argument is null, a suitable default 
  * value is used. 
  * 
  * If "get" is requested the first time this application is run 
  * or after a "clear" operation, a suitable default value is 
  * returned. 
  * 
 **/ 
public class PrefsDemo { 
  // Define constants for the three possible operations. 
  private static final int GET   = 1; 
  private static final int CLEAR = 2; 
  private static final int PUT   = 3; 
  /** Constructs the PrefsDemo application. **/ 
  public PrefsDemo (String[] args) { 
    // Get the preferences node for this user and this package. 
    Preferences prefs = Preferences.userNodeForPackage (getClass ()); 
    // Decode the command-line arguments. 
    String command  = null; 
    String param2   = null; 
    String param3   = null; 
    String newvalue = null; 
    boolean export  = false; 
    System.err.println (""); 
    if (args.length == 0) { 
        System.err.println ("No command given, assuming 'get'"); 
        command = "get"; 
    } 
    else if (args.length == 1) { 
        command = args[0]; 
    } 
    else if (args.length == 2) { 
        command = args[0]; 
        param2  = args[1]; 
    } 
    else if (args.length == 3) { 
        command = args[0]; 
        param2  = args[1]; 
        param3  = args[2]; 
    } 
    // Turn the string commands into ints so they can be used 
    // in a switch. 
    int operation; 
    if (command.equals ("get")) { 
        operation = GET; 
    } 
    else if (command.equals ("clear")) { 
        operation = CLEAR; 
    } 
    else if (command.equals ("put")) { 
        operation = PUT; 
        newvalue = 
          param2!=null ? param2 : "you forgot the value, dummy"; 
    } 
    else { 
        System.err.println 
          ("Don't understand command '" + command + "', assuming 'get'"); 
        operation = GET; 
    } 
    // See if the 2nd parameter (for GET and CLEAR) or 
    // 3rd parameter (for PUT) is the string "export". 
    if (operation == GET || operation == CLEAR) { 
        export = "export".equalsIgnoreCase (param2); 
    } 
    else if (operation == PUT) { 
        export = "export".equalsIgnoreCase (param3); 
    } 
    // Do the operation requested by the command-line argument(s). 
    switch (operation) { 
      case CLEAR: 
        System.err.println ("Clearing preferences"); 
        try { 
          prefs.clear (); 
        } 
        catch (BackingStoreException bse) { 
          System.err.println (bse); 
        } 
        break; 
      case GET: 
        String prefs_value = prefs.get ("PrefsValue", "default value"); 
        System.err.println 
          ("Got PrefsValue `" + prefs_value + "' from prefs"); 
        break; 
      case PUT: 
        System.err.println ("Putting `" + newvalue + "' into prefs"); 
        prefs.put ("PrefsValue", newvalue); 
        int num_puts = prefs.getInt ("num_puts", 0); 
        prefs.putInt ("num_puts", num_puts+1); 
        System.err.println 
          ("Number of puts since clear is " + (num_puts+1)); 
        break; 
    } // switch 
    if (export) { 
        try { 
          prefs.exportNode (System.out); 
        } 
        catch (java.io.IOException ioe) { 
          System.err.println (ioe); 
        } 
        catch (BackingStoreException bse) { 
          System.err.println (bse); 
        } 
    } 
  } // ctor 
  public static void main (String[] args) { 
    new PrefsDemo (args); 
  } // main 
}   // class PrefsDemoApp 
下边这篇文字更为详细的介绍了个人偏好设定这个话题: 
http://java.sun.com/developer/technicalArticles/releases/preferences/



本文转自gnuhpc博客园博客,原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822272.html,如需转载请自行联系原作者
相关文章
|
1月前
|
Java
Java代码设定固定模板
Java代码设定固定模板
13 0
|
2月前
|
监控 负载均衡 Dubbo
|
3月前
|
前端开发 Java 数据安全/隐私保护
Java学习—GUI编程学习笔记
Java学习—GUI编程学习笔记
|
6月前
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——备忘录模式Memento(原理讲解+应用场景介绍+案例介绍+Java代码实现)
54 0
|
6月前
|
Java 编译器
【Java学习笔记】 对象和类
【Java学习笔记】 对象和类
|
6月前
|
设计模式 存储 Java
【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——迭代器模式Iterator(原理讲解+应用场景介绍+案例介绍+Java代码实现)
28 0
|
4月前
|
存储 缓存 安全
《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
《java核心技术36讲》学习笔记-------杨晓峰(极客时间)
56 0
|
1月前
|
存储 前端开发 Java
java学习笔记
java学习笔记
61 0
|
3月前
|
XML Java 数据格式
Spring5学习笔记——狂神说Java
Spring5学习笔记——狂神说Java
|
4月前
|
数据采集 缓存 分布式计算
java并发编程实践——王宝令(极客时间)学习笔记
java并发编程实践——王宝令(极客时间)学习笔记
37 0