Properties类
简要概括: Properties类是 键和值均为字符串的可以永久存储到文件中的key-value集合
java.util.Properties类表示一组持久的属性,是Hashtable的子类。 Properties可以保存到流中或从流中加载,可以保存到后缀名为properties的文件中。 属性列表中的每个键及其对应的值都是一个字符串。 即键和值都是String类型。
因为Properties从继承Hashtable时, put种putAll方法可应用于Properties对象。
强烈不鼓励使用它们,因为它们允许调用者插入其键或值不是Strings 。 应该使用setProperty方法。
这个类是线程安全的:多个线程可以共享一个Properties对象,而不需要外部同步。
常用方法
load() 方法,将数据(键值对)从properties文件中加载到内存中,可通过调用者来访问数据
//从输入字节流读取属性列表(键和元素对) void load(InputStream inStream) //以简单的线性格式从输入字符流读取属性列表(关键字和元素对) void load(Reader reader)
store() 方法,将属性列表(键和元素对)写入此 Properties表中,
//将此属性列表(键和元素对)写入此 Properties表中 void store(OutputStream out, String comments) //将此属性列表(键和元素对)写入此 Properties表中 void store(Writer writer, String comments)
对键值对进行操作
//得到key 对应的值 String getProperty(String key) //插入键值对或者修改键值对 Object setProperty(String key, String value)
案例:
import java.util.*; import java.io.*; //先创建Properties类的实例,插入一系列key-value,存储到"e:\\1.properties" //中,然后在从文件中读取属性,打印到控制台 public class PropertiesDemo { public static void main(String[] args) throws IOException { fun_2();//创建Properties 并存储到文件 fun_1();//从文件中读取并打印到控制台 } public static void fun_1() throws IOException { Properties pro = new Properties(); FileReader fr = new FileReader("e:\\1.properties"); pro.load(fr); fr.close(); System.out.println(pro); } public static void fun_2() throws IOException { Properties pro = new Properties(); FileWriter fw = new FileWriter("e:\\1.properties"); pro.setProperty("name", "fengjl"); pro.setProperty("age", "11"); pro.setProperty("email", "123456789@qq.com"); pro.store(fw, "abc"); fw.close(); } }
IDEA中配置properties文件的方法
IDEA中.properties文件是Resource型文件,故创建新的文件类型是应选择 Resource Bundle 类型 然后以文本文件的格式写入配置信息
完成配置信息后,会在创建处看到后缀为.properties的文件,然后将此文件编译后,可以在out中对应项目的区域看到相应的文件。
下图中1处为 创建时位置,2处为编译后IDEA自动复制到的位置
因为编译后IDEA会自动的向该区域(存储Class文件区域)复制一份,这样我们在编写配置程序时就可以使用类加载器来进行配置文件的载入,因为该文件在类加载的路径中。
类加载器载入配置文件如下
//JDBCUtils类 为代码所在类,主要目的是由此类得到类加载器 InputStream in = JDBCUtiles.class.getClassLoader().getResourceAsStream("database.properties"); Properties pro = new Properties(); pro.load(in);