Properties类

properties文件顾名思义,属性文件,从它的名称中直观的理解就是,它应该是可以表示某些属性,
是的,可以在它里面定义一些字段,这将不需要我们在代码中书写,这就可以将这些信息从代码中分离出来了,很方便。

介绍

  1. 是Hashtable的子类 ,是一个特殊的建值对。保存的地方是文件
  2. key 与 value 都是String类型

常用方法

方法

内容

getProperty ( String key)

用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。

load ( InputStream inStream)

从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。

setProperty ( String key, String value)

调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。

store ( OutputStream out, String comments)

以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。

clear ()

注释信息后面是属性文件的当前保存时间信息。清除所有装载的 键 - 值对。该方法在基类中提供。

stringPropertyNames()

得到所有的key 装到一个Set集合中

Test1:写入//生成Properties配置文件

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Properties;

public class Test1 {

	public static void main(String[] args) {
		// Properties类的使用
		// 属于hashtable的子类,Properties类也是key-value,可以把属性写到文件中
		// Properties的key-value,的类型都是String类型
		Properties properties = new Properties();

		// put()方法就是添加属性
		properties.put("aaa", "123456789");
		properties.put("bbb", "9876541");

		// 把Properties写到文件中还需要一步,调用store方法
		// writer:写到哪一个文件当中
		// comments:备注
		Writer out = null;

		try {
			out = new FileWriter("D:\\TestDic\\Test\\aaa.properties");
			properties.store(out, null);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (out != null) {
				try {
					out.flush();
					out.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
		}

		// getProperty ( String key)用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
		// load ( InputStream inStream)从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的
		// test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
		// setProperty ( String key, String value)调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置
		// 键 - 值对。
		// store ( OutputStream out, String comments)以适合使用 load 方法加载到 Properties
		// 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 -
		// 值对写入到指定的文件中去。如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。
		// clear ()注释信息后面是属性文件的当前保存时间信息。清除所有装载的 键 - 值对。该方法在基类中提供。
		// stringPropertyNames()得到所有的key 装到一个Set集合中

		// Properties类
		// 保存的文件,使用.properties作为文件后缀
		// 文件的内容格式key=value
	}
}

Test2:读取Properties配置文件

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.Properties;

public class Test2 {

	public static void main(String[] args) {

		// getProperty ( String key)用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
		// load ( InputStream inStream)从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的
		// test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。
		// setProperty ( String key, String value)调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置
		// 键 - 值对。
		// store ( OutputStream out, String comments)以适合使用 load 方法加载到 Properties
		// 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 -
		// 值对写入到指定的文件中去。如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。
		// clear ()注释信息后面是属性文件的当前保存时间信息。清除所有装载的 键 - 值对。该方法在基类中提供。
		// stringPropertyNames()得到所有的key 装到一个Set集合中

		// Properties类
		// 保存的文件,使用.properties作为文件后缀
		// 文件的内容格式key=value

		// 读取Properties
		Properties properties = new Properties();

		Reader reader = null;
		try {
			reader = new FileReader("D:\\TestDic\\Test\\aaa.properties");
			// 使用load()方法,就可以读取properties()文件; load()就会把文件中的属性,加载到properties对象中
			properties.load(reader);

			String string = properties.getProperty("aaa","default value");//如果不存在aaa key 的,返回默认值
			System.out.println(string);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (reader != null) {
				try {
					reader.close();
				} catch (Exception e2) {
					// TODO: handle exception
				}
			}
		}

	}
}