储存应用首选项

来源:互联网 发布:做动画片用什么软件 编辑:程序博客网 时间:2024/06/04 18:21

Property Maps

Property map是一种用于储存键值对的数据结构,常用于储存配置信息。它有如下3个特点:
- 键和值都是字符串
- 容易储存到文件和从文件加载
- 可以提供默认值
Java使用Properties类实现property map。

Properties settings = new Properties();settings.put("width", "200");settings.put("title", "Hello, World!");使用store方法储存到文件FileOutputStream out = new FileOutputStream("program.properties");// 第二个参数是写入文件的注释settings.store(out, "Program Properties");使用load方法从文件读取FileInputStream in = new FileInputStream("program.properties");settings.load(in);

有两种方法提供默认值

为单个属性提供默认值String title = settings.getProperty("title", "Default title");为多个属性提供默认值Properties defaultSettings = new Properties();defaultSettings.put("width", "300");defaultSettings.put("height", "200");defaultSettings.put("title", "Default title");. . .Properties settings = new Properties(defaultSettings);

Preferences

许多系统都有中心库用于储存配置信息,例如Windows的注册表。Java Preferences Class提供了平台无关的方法来读写中心库。
Preferences Class提供类似于包名的树形结构(节点路径),例如:/com/mycompany/myapp,以解决命名冲突。
每个节点储存一张独立的键值对表,可以储存数字,字符串,字节数组。

从用户或者系统的根节点开始,访问节点树Preferences root = Preferences.userRoot();orPreferences root = Preferences.systemRoot();在获得根节点后,使用节点路径来获得对应节点的键值对表Preferences node = root.node("/com/mycompany/myapp");通常会包名为节点路径,这时可以用如下快捷方式获得对应节点的键值对表Preferences node = Preferences.userNodeForPackage(obj.getClass());orPreferences node = Preferences.systemNodeForPackage(obj.getClass());在获得对应节点的键值对表后,使用如下方法获取储存信息// defval是在key不存在时提供的默认值String get(String key, String defval)int getInt(String key, int defval)long getLong(String key, long defval)float getFloat(String key, float defval)double getDouble(String key, double defval)boolean getBoolean(String key, boolean defval)byte[] getByteArray(String key, byte[] defval)使用put方法储存信息put(String key, String value)putInt(String key, int value)......使用keys方法遍历所有的键String[] keys()使用export方法导出void exportSubtree(OutputStream out)    // 导出节点树void exportNode(OutputStream out)       // 导出单个节点使用importPreferences方法导入void importPreferences(InputStream in)
0 0
原创粉丝点击