一.Properties集合
1.Properties集合的特点
- Properties类介绍:Properties 类表示了一个持久的属性集。Properties
可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 - 特点
- Hashtable的子类,map集合中的方法都可以用
- 该集合没有泛型。键值都是字符串
- 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
有和流技术相结合的方法
- 方法介绍
load(InputStream inputStream)
把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
load(Reader reader)
按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)
store(OutputStream outputStream,String commonts)
把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
stroe(Writer writer,String comments)
以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符
2.Properties集合存储键值对
- Properties集合存储键值对方法介绍
- 集合对象Properties类,继承Hashtable,实现Map接口
- 可以和IO对象结合使用,实现数据的持久存储
- 使用Properties集合,存储键值对
- setProperty等同与Map接口中的put
- setProperty(String key, String value)
- 通过键获取值, getProperty(String key)
Properties pro=new Properties();
pro.setProperty("1","黄");
pro.setProperty("2","志");
pro.setProperty("3","桃");
//方法stringPropertyNames,将集合中的键存储到Set集合,类似于Map接口的方法keySet
Set<String> set = pro.stringPropertyNames();
for (String key : set) {
System.out.println(pro.getProperty(key));
}
3.Properties集合的方法load
- Properties集合的方法load方法介绍
- Properties集合特有方法 load
- load(InputStream in)
- load(Reader r)
- 传递任意的字节或者字符输入流
- 流对象读取文件中的键值对,保存到集合
- 实例代码(读取jdbc.properties文件)
Properties p=new Properties();
//使用字节文件操作流
InputStream is=new FileInputStream("D:\\hzt\\mess\\properties\\src\\jdbc.properties");//绝对地址
//使用字节缓冲缓冲流
// InputStream is=new BufferedInputStream(new FileInputStream("src/jdbc.properties"));//相对地址
p.load(is);
System.out.println(p.getProperty("jdbc.username"));
p.list(System.out);
通过类加载器获取文件
Properties p=new Properties();
InputStream is = GetProperties.class.getClassLoader().getResourceAsStream("jdbc.properties"); //GetProperties为当前类名,静态方法中不能使用this
p.load(is);
System.out.println(p.getProperty("jdbc.username"));
p.list(System.out);
4.Properties集合的方法store
- Properties集合的方法store介绍
- Properties集合的特有方法store
- store(OutputStream out)
- store(Writer w)
- 接收所有的字节或者字符的输出流,将集合中的键值对,写回文件中保存
- 实例代码
1. 普通写入,中文时乱码
Properties pro=new Properties();
InputStream is = Store.class.getClassLoader().getResourceAsStream("jdbc.properties");
pro.load(is);
pro.setProperty("name","黄志桃");
pro.setProperty("sex","男");
OutputStream out=new FileOutputStream("src/jdbc.properties");
pro.store(out,"填充数据");
out.close();
2.处理乱码
加以下代码即可
OutputStreamWriter osw=new OutputStreamWriter(out,"UTF-8");
5 . 加载和导出到 xml 配置文件
将Properties 类中定义的属性,导出成 .xml 的形式.
Properties pro=new Properties();
pro.setProperty("name","黄志桃");
pro.setProperty("sex","男");
OutputStream output=new FileOutputStream("src/jdbc.xml");
//编码设置成utf-8的形式。
pro.storeToXML(output,"填充到xml","utf-8");
导出XML 配置文件 loadFromXML
Properties pro=new Properties();
InputStream is = Store.class.getClassLoader().getResourceAsStream("jdbc.xml");
pro.loadFromXML(is);
pro.list(System.out);
注:this.class.getClassLoader().getResourceAsStream(url);
是从编译后的文件中获取