用于读写Properties属性配制文件的通用类
程序员文章站
2022-04-20 08:10:32
...
哈哈,好久没有来了,这段时间在武汉出差,所以都没有什么时间来上网了,好想回家啊!
今天发一个我以前写的读写属性配置文件的类,这个类会在我以后要发的一些类中用到,所以就先把它发上来了!
这个类非常的通用,而且很灵活,要读写的配置文件可以放在ClassPath下的任意一个目录中,只要传入文件路径就可以了!
希望这个能够对大家有些帮助,也希望大家可以多提建议和想法,让我们大家在JavaEye这个大家庭中一起共同进步!
哦,我还想问一个问题,可以用手机上JavaEye吗?
该类在“Database”分类中的《用于JDBC操作数据库的公共类》文章中用到了!
2010-10-28
哈哈,好久没有来发文章了,今天来更新一下以前发过的代码:
我对RWProperties.java进行了一些完善和修改,修正了修改配置文件的一个Bug,改进了读取配置文件的效率,新增了移除属性的方法,完善了注释。
大家如果发现有什么Bug希望能及时搞出来,以便完善这里的代码。
今天发一个我以前写的读写属性配置文件的类,这个类会在我以后要发的一些类中用到,所以就先把它发上来了!
这个类非常的通用,而且很灵活,要读写的配置文件可以放在ClassPath下的任意一个目录中,只要传入文件路径就可以了!
希望这个能够对大家有些帮助,也希望大家可以多提建议和想法,让我们大家在JavaEye这个大家庭中一起共同进步!
哦,我还想问一个问题,可以用手机上JavaEye吗?
该类在“Database”分类中的《用于JDBC操作数据库的公共类》文章中用到了!
2010-10-28
哈哈,好久没有来发文章了,今天来更新一下以前发过的代码:
我对RWProperties.java进行了一些完善和修改,修正了修改配置文件的一个Bug,改进了读取配置文件的效率,新增了移除属性的方法,完善了注释。
大家如果发现有什么Bug希望能及时搞出来,以便完善这里的代码。
/*
* @(#)RWProperties.java 2010-10-28
*
* Copyright 2010 BianJing,All rights reserved.
*/
package test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 用于读写Property属性配置文件的类
*
* @author BianJing<br/>
* E-mail:[email protected]
* @version 0.9 2010-10-28
*/
public class RWProperties {
private Properties properties;
/** 配置文件的完整路径 */
private String filePath;
/**
* 初始化RWProperties
*
* @param propertyFilePath
* 属性配置文件的完整路径,
* 如:"com/pagination/config/PaginationConfig.properties"
* @return RWProperties的实例
*/
public RWProperties(String propertyFilePath) {
filePath = propertyFilePath;
properties = getProperties(propertyFilePath);
};
/**
* 获得Key值所对应的Value值。
*
* @param key
* 属性配置文件的Key值
* @return Key值所对应的Value值
*/
public String getProperty(String key) {
return properties.getProperty(key);
}
/**
* 修改属性配置文件
*
* @param key
* 属性配置文件的Key值
* @param value
* 属性配置文件的value值
* @param propertyFilePath
* 属性配置文件的完整路径,
* 如:"com/pagination/config/PaginationConfig.properties"
* @return 修改成功返回true,失败则返回false
*/
public boolean setProperty(String key, String value) {
FileOutputStream fos = getFileOutputStream(filePath);
properties.setProperty(key, value);
boolean flag = false;
try {
properties.store(fos, null);
flag = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
close();
} finally {
fos = null;
}
}
}
return flag;
}
/**
* 移除属性配置文件中的某个属性
*
* @param key
* 属性配置文件的Key值
* @return 移除成功返回true,失败则返回false
*/
public boolean removeProperty(String key) {
FileOutputStream fos = getFileOutputStream(filePath);
properties.remove(key);
boolean flag = false;
try {
properties.store(fos, null);
flag = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
close();
} finally {
fos = null;
}
}
}
return flag;
}
/**
* 释放资源
*/
public void close() {
if (properties != null) {
properties.clear();
}
}
/**
* 返回加载了配置文件的Properties对象
*
* @param propertyFilePath
* 属性配置文件的完整路径,
* 如:"com/pagination/config/PaginationConfig.properties"
* @return java.util.Properties
*/
private Properties getProperties(String propertyFilePath) {
Properties properties = new Properties();
InputStream is = null;
try {
is = RWProperties.class.getClassLoader().getResourceAsStream(
propertyFilePath);
properties.load(is);
} catch (NullPointerException e) {
e.printStackTrace();
close();
} catch (IOException e) {
e.printStackTrace();
close();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
is = null;
}
}
}
return properties;
}
/**
* 返回已经加载了配置文件的文件输出流
*
* @param propertyFilePath
* 属性配置文件的完整路径,
* 如:"com/pagination/config/PaginationConfig.properties"
* @return java.io.FileOutputStream
*/
private FileOutputStream getFileOutputStream(String propertyFilePath) {
FileOutputStream fos = null;
String filePath = null;
filePath = RWProperties.class.getClassLoader().getResource(
propertyFilePath).getFile();
filePath = filePath.replaceFirst("/", "");
// 如果URL地址中含有空格,则空格会被"%20"替换,所以要将它替换回来
filePath = filePath.replaceAll("%20", " ");
try {
fos = new FileOutputStream(filePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
close();
}
return fos;
}
}
上一篇: 清明节吃青团寓意是什么
下一篇: 我有办法