一个不错的java的配置文件的设置

时间:2022-03-30 00:01:42
package property;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.URL;
import java.util.Properties; public class AppConfig {
private static File proFile = null; static {
String className = AppConfig.class.getName(); String classNamePath = className.replace(".", "/") + ".class"; URL is = AppConfig.class.getClassLoader().getResource(classNamePath); String path = is.getFile();
File file = new File(path);
proFile = new File(file.getParent() + File.separator + "test.property");
} public boolean containsProperty(String key) {
Properties props = getProperties();
return props.containsKey(key);
} /**
* 得到所有的配置
*
* @return
*/
public Properties get() {
FileInputStream fis = null;
Properties props = new Properties();
try { fis = new FileInputStream(proFile);
props.load(fis);
} catch (Exception e) {
} finally {
try {
fis.close();
} catch (Exception e) {
}
}
return props;
} public String get(String key) {
Properties props = get();
return (props != null) ? props.getProperty(key) : null;
} public Properties getProperties() {
return get();
} /**
* 得到cookie
*
* @param key
* @return
*/
public String getProperty(String key) {
return get(key);
} /**
* 删除配置文件
*
* @param key
*/
public void remove(String... key) {
Properties props = get();
for (String k : key)
props.remove(k);
setProps(props);
} public void removeProperty(String... key) {
remove(key);
} public void set(Properties ps) {
Properties props = get();
props.putAll(ps);
setProps(props);
} /**
* 相当于
*
* @param key
* @param value
*/
public void set(String key, String value) {
Properties props = get();
props.setProperty(key, value);
setProps(props);
} public void setProperties(Properties ps) {
set(ps);
} public void setProperty(String key, String value) {
set(key, value);
} /**
* 添加一个配置
* @param p
*/
private void setProps(Properties p) {
FileOutputStream fos = null;
try {
// 把config建在files目录下
// fos = activity.openFileOutput(APP_CONFIG, Context.MODE_PRIVATE); // 把config建在(自定义)app_config的目录下
fos = new FileOutputStream(proFile); p.store(fos, null);
fos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (Exception e) {
}
}
} }