储存应用首选项

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();
or
Preferences root = Preferences.systemRoot();

在获得根节点后,使用节点路径来获得对应节点的键值对表
Preferences node = root.node("/com/mycompany/myapp");

通常会包名为节点路径,这时可以用如下快捷方式获得对应节点的键值对表
Preferences node = Preferences.userNodeForPackage(obj.getClass());
or
Preferences 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值