Java笔记

来源:互联网 发布:mysql和oracle的比较 编辑:程序博客网 时间:2024/06/07 23:06

Properties是HashTabel的一个子类,它表示了一个属性集。
特点:1.Properties集合中的键和值都是字符串类型的,所以不需要定义泛型。
2.Properties集合中的数据可以保存到流中,或者从流中获取。
通常,该集合用于操作以键值对形式存在的配置文件。

Properties集合的常用方法

public Object setProperty(String key, String value):向Properties集合中存储数据,调用 Hashtable 的方法 put。
public String getProperty(String key):根据键获取值。
如果想要获取全部的键值,可以将Map集合转为Set集合,或者使用Properties类提供的方法:
public Enumeration< ?> propertyNames():返回属性列表中所有键的枚举
public Set< String> stringPropertyNames():返回此属性列表中的键集,其中该键及其对应值是字符串

Properties prop = new Properties();prop.setProperty("zhangsan", "20");prop.setProperty("lisi", "24");prop.setProperty("wangwu", "63");prop.setProperty("zhaoliu", "56");prop.setProperty("wangwu", "36");//修改元素Set<String> names = prop.stringPropertyNames();Iterator<String> it = names.iterator();while (it.hasNext()) {    String key = it.next();    String value = prop.getProperty(key);    System.out.println(key+":"+value);}

输出结果:

zhangsan:20lisi:24wangwu:36zhaoliu:56

Properties集合和IO流

Properties集合信息的查看

public void list(PrintStream out):将属性列表输出到指定的输出流。参数是PrintStream类型的,System.out标准输出流就是PrintStream类型。这个方法相当于把集合中的元素移到输出流中去,在这里也就是控制台中,在控制台查看。只是打印出来看一下,不能进行操作,主要是调试时使用。

Properties prop = new Properties();prop.setProperty("zhangsan", "20");prop.setProperty("lisi", "24");prop.setProperty("wangwu", "63");prop.setProperty("zhaoliu", "56");prop.list(System.out);

输出结果:

-- listing properties --zhangsan=20lisi=24wangwu=63zhaoliu=56

Properties属性信息持久化

如果我们将属性信息保存在Properties集合中,也就是保存在内存中,这样程序只要一结束,系统退出内存,属性信息就消失了。我们想将这些属性信息保存起来,保存在硬盘上,便可以永久使用,只要使用的时候读取即可。
如果想要将Properties集合信息保存在本地,就需要输出流。
public void store(OutputStream out, String comments):以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
public void store(Writer writer, String comments):以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
注意:comments是属性信息文件的备注,只能使用英文,如果使用中文会转成十六进制。

Properties prop = new Properties();prop.setProperty("zhangsan", "20");prop.setProperty("lisi", "24");prop.setProperty("wangwu", "63");prop.setProperty("zhaoliu", "56");//既然是将数据保存到文件中,就要用到输出流FileOutputStream fos = new FileOutputStream("E:\\prop.txt");prop.store(fos, "info");fos.close();

输出结果:

//硬盘上产生了一个prop.txt文件#info#Sun Jun 18 10:19:55 CST 2017zhangsan=20lisi=24zhaoliu=56wangwu=63

Properties属性信息读取

如果已经存在属性信息,我们想要读取这些信息到集合中,方便我们进行操作。
注意:必须要保证该文件中的数据是键值对。
public void load(InputStream inStream):从输入流中读取属性列表(键和元素对)。
public void load(Reader reader):按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

Properties prop = new Properties();//既然是从文件中读取数据,就要用到输入流FileInputStream fis = new FileInputStream("E:\\prop.txt");prop.load(fis);//将文件中的信息读取到Properties集合中prop.list(System.out);//把Properties集合的信息打印到控制台

输出结果:

-- listing properties --zhangsan=20lisi=24zhaoliu=56wangwu=63
原创粉丝点击