import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
/**
* 测试获取properties配置文件的内容,一定要存在这样的properties
* 要显示具体的数据
* @class PropertiesBean
* @description
* @author 李智慧
* @copyRight copyright(c) 2011 广东南航易网通电子商务有限公司,Rights Reserved
* @time Dec 6, 2011 4:30:24 PM
*/
public class PropertiesBean {
public static void main(String[] args) {
// System.out.println(PropertiesBean.class.getClassLoader().getResource("config.properties"));
String result = PropertiesBean.readPropertiesValue("config.properties","love");
System.out.println(result);
Boolean b = PropertiesBean.writePropertiesValue("config.properties", "职业", "微软集团总裁");
System.out.println(b);
}
/**
* 获取配置文件 对应key的value值。
*
* @param propertiesName
* 具体配置文件的名称,注意:此例子的配置文件是放置在classes目录下。
* @param key
* 对应key值
* @return value值
*/
public static String readPropertiesValue(String propertiesName,String key){
String result = "";
Properties properties = new Properties();
InputStream inputStream = null;
try{
//方式一:使用getResourceAsStream获取数据流
inputStream = PropertiesBean.class.getClassLoader().getResourceAsStream(propertiesName);
//方式二:使用getResource获取url地址,然后解析出对应的绝对路径。
// inputStream = new BufferedInputStream (new FileInputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", "")));
properties.load(inputStream);
//修改编码,解决中文乱码问题
// result = new String(properties.getProperty(key).toString().getBytes("ISO8859_1"),"gbk");
if(properties.containsKey(key)){
result = properties.getProperty(key).toString();
}
}catch (Exception e) {
result = "读取配置文件信息出现错误。";
if(inputStream != null){
try {
inputStream.close();
} catch (IOException e1) {
result = "关闭输出流出现错误。";
}
}
}
return result;
}
/**
* 修改对应的键值对(如果没有的话,会是新增)
*
* @param propertiesName
* 配置文件的名称,注意内容同上。
* @param key
* 对应的键值
* @param value
* 对应的value值
* @return 返回是否操作正確
*/
public static boolean writePropertiesValue(String propertiesName,String key,String value){
boolean b = false;
OutputStream outputStream = null;
InputStream fis = null;
Properties properties = new Properties();
try{
//打开输入流的作用是保存没有被修改的键值对,如果没有下面两行,对应的配置文件中就只有设置的键值对了。
fis = new FileInputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", ""));
//从输入流中读取属性列表(键和元素对)
properties.load(fis);
outputStream = new FileOutputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", ""));
properties.setProperty(key, value);
properties.store(outputStream, "修改配置文件信息");
b = true;
}catch (Exception e) {
System.out.println("写入配置文件出现错误。"+e.getMessage().toString());
}finally{
try {
outputStream.close();
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("关闭输出出入流出现问题。");
}
}
return b;
}
}
|