/**
* @描述: 读取配置辅助类
*/
public class PropertiesUtils
{
private static Logger logger = Logger.getLogger(PropertiesUtils.class);
/**
* 属性文件的路径
*/
private static String propfilepath = "config.properties";
/**
* 读取属性文件中相应键的值
*
* @param key 主键
* @return String
*/
public static String getKeyValue(String key)
{
return getKeyValue(propfilepath, key);
}
/**
* 根据主键key读取主键的值value
*
* @param filePath 属性文件路径
* @param key 键名
*/
public static String getKeyValue(String filePath, String key)
{
// 根据当前执行线程返回该线程的上下文 ClassLoader
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
String value = "";
try
{
// 加载类获取源,读入输入流
InputStream in = classLoader.getResource(filePath).openStream();
// 定义个持久的属性集
Properties properties = new Properties();
// 从输入流读取属性列表
properties.load(in);
// 用指定的key获取属性列表中的属性值
value = properties.getProperty(key);
}
catch (IOException e)
{
logger.error(e);
}
return value;
}
/**
* 更新properties文件的键值对 如果该主键已经存在,更新该主键的值; 如果该主键不存在,则插件一对键值。
*
* @param key 键名
* @param val 键值
*/
public static void writeProperties(String key, String val)
{
writeProperties(propfilepath, key, val);
}
/**
* 更新properties文件的键值对 如果该主键已经存在,更新该主键的值; 如果该主键不存在,则插件一对键值。
*
* @param key 键名
* @param val 键值
*/
public static void writeProperties(String fileName, String key, String val)
{
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
Properties props = new Properties();
try
{
InputStream in = new BufferedInputStream(new FileInputStream(new File(path.replace("%20", " ") + fileName)));
props.load(in);
// 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
// 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(new File(path.replace("%20", " ") + fileName));
props.setProperty(key, val);
// 以适合使用 load 方法加载到 Properties 表中的格式,
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
props.store(fos, "Update '" + key + "' value");
}
catch (Exception e)
{
logger.error("属性文件解析错误" + e);
}
}
public static void main(String[] args)
{
System.out.println(getKeyValue("sessionInfoName"));
System.out.println(getKeyValue("log4j.properties", "log4j.appender.OneFile"));
writeProperties("runtime.properties", "abc", "abc");
System.out.println(getKeyValue("runtime.properties", "abc"));
}
}
Java常见帮助类(3)读取配置文件
最新推荐文章于 2021-02-27 17:35:19 发布