Properties可以用来保存属性集(类似Map, 以键值的形式保存数据,不同的是Properties都是String类型的)。这个类的优势是可以从流中加载属性集,或者把属性集报错到流中。
基本使用
public Object setProperty(String key, String value); // 新增或修改一个属性
public String getProperty(String key); // 获得key对应的值
public Set<String> stringPropertyNames(); // 所有key的名称的集合
使用方法如下
public static void main(String[] args) {
Properties properties = new Properties();
properties.setProperty("name", "xiaoming");
properties.setProperty("age", "18");
properties.setProperty("sex", "女");
properties.stringPropertyNames().forEach(e ->{
System.out.println(e + " = " + properties.get(e));
});
}
从流中读写Properties
写Properties到流
public static void main(String[] args) {
Properties properties = new Properties();
properties.setProperty("name", "xiaoming");
properties.setProperty("age", "18");
properties.setProperty("sex", "女");
properties.stringPropertyNames().forEach(e ->{
System.out.println(e + " = " + properties.get(e));
});
try (Writer writer = new FileWriter(new File("properties.txt"));) {
properties.store(writer, "afdsafdsa");
} catch (IOException e) {
e.printStackTrace();
}
}
打开properties.txt,内容如下:
#afdsafdsa
#Wed Oct 14 13:04:35 CST 2020
sex=女
name=xiaoming
age=18
从流中读取Properties
public static void main(String[] args) {
Properties properties = new Properties();
try (Reader reader = new FileReader(new File("properties.txt"))) {
properties.load(reader);
properties.stringPropertyNames().forEach(e ->{
System.out.println(e + " = " + properties.get(e));
});
} catch (IOException e) {
e.printStackTrace();
}
}
运行结果如下:
sex = 女
name = xiaoming
age = 18
Process finished with exit code 0