Properties类
properties文件顾名思义,属性文件,从它的名称中直观的理解就是,它应该是可以表示某些属性,
是的,可以在它里面定义一些字段,这将不需要我们在代码中书写,这就可以将这些信息从代码中分离出来了,很方便。
介绍
- 是Hashtable的子类 ,是一个特殊的建值对。保存的地方是文件
- 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
}
}
}
}
}