使用Properties类操作properties配置文件
一、通过jdk提供的java.util.Properties类
这个类是继承java.util.HashTable,间接地实现了Map接口,可以使用相应的方法来操作文件,但不建议使用像put、putAll这两个方法,因为put方法不仅允许存入String类型的value,还可以存入Object类型的。
因此Properties类提供了getProperty() 和setProperty() 方法来操作文件,同时使用store() 或save()(已过时) 来保存属性值(把属性值写入.properties配置文件)
在使用之前需要加载属性文件,它提供了两个方法:
load() 和loadFromXML() ;
load()方法有两个重载,load(InputStream inStream) 、load(Reader reader) ,所以,可根据不同的方式来加载属性文件。
可根据不同的方式来获取InputStream,如:
- 通过当前类加载器的getResourceAsStream方法获取
InputStream inStream = TestProperties.class.getClassLoader().getResourceAsStream("test.properties");
- 从文件获取
InputStream inStream = new FileInputStream(new File("filePath"));
- 也是通过类加载器来获取,和第一种一样
InputStream in = ClassLoader.getSystemResourceAsStream("filePath");
- 在servlet中,还可以通过context来获取InputStream
InputStream in = context.getResourceAsStream("filePath");
- 通过URL来获取
URL url = new URL("path");
InputStream inStream = url.openStream();
读取方法如下:
Properties prop = new Properties();
prop.load(inStream);
String key = prop.getProperty("username");
//String key = (String) prop.get("username");
具体用法,这里贴上读取数据库的连接地址的例子
public class PropertiesUtil {
//这里是properties配置文件的地址
public static final String PropertiesPath="sqlinfo.properties";
public static String getvalues(String key){
String vlaues=PropertiesUtil.getValues(PropertiesPath, key);
return vlaues;
}
//重载
public static String getValues(String path,String key) {
//创建实例对象
Properties pps=new Properties();
//通过当前类的加载器的getResourceAsStream()获取InputStream
InputStream is=PropertiesUtil.class.getClassLoader().getResourceAsStream(path);
String values=null;
try {
//读取文件
pps.load(is);
//getProperty()通过键得到值
values=pps.getProperty(key);
} catch (IOException e) {
e.printStackTrace();
}
return values;
}
}
本文参考:CSDN博主「MikanMu」的原创文章
原文链接:https://blog.csdn.net/mhmyqn/article/details/7683909