JAVA Properties工具类

今天遇到一个问题就是new FileInputStream(“”)不能获取相对路径的输入流,只能写绝对路径才能访问。

本人通过参考一些文件现总结如下:

1、首先是加载property属性文件

private static Properties properties;
private static Logger log = Logger.getLogger(Configuration.class);

private final static String PropfilePath = "load/proptertyFIle/system.properties";

static{
InputStream in = null;
properties = new Properties();
try {
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
//in = new BufferedInputStream (new FileInputStream(path + "/system.properties"));

in = Configuration.class.getClassLoader().getResourceAsStream(PropfilePath);
properties.load(in);

} catch (FileNotFoundException ex) {
log.error("Cannot find file [system.properties].");
ex.printStackTrace();
} catch (IOException ex) {
log.error("Read file[system.properties] Error.");
ex.printStackTrace();
} finally {

try {
if (in != null)
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

2、有key获取value

public static String getValue(String key) {
if (properties.containsKey(key)) {
// 得到某一属性的值
String value = properties.getProperty(key);
return value;
} else
return "";
}

3、读取properties

public static void readProperties(String filePath) {
Properties props = new Properties();
try {
InputStream in = new BufferedInputStream((new FileInputStream(filePath)));
props.load(in);
Enumeration en = props.propertyNames();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
String Property = props.getProperty (key);
System.out.println(key+Property);
}
} catch (Exception e) {
e.printStackTrace();
}
}
4、 //写入propertity信息

public static void writeProperties(String filePath,String parameterName,String parameterValue) {
Properties prop = new Properties();
try {
InputStream fis = new FileInputStream(filePath);
//从输入流中读取属性列表(键和元素对)
prop.load(fis);
//调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
//强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(filePath);
prop.setProperty(parameterName, parameterValue);
//以适合使用 load 方法加载到 Properties 表中的格式,
//将此 Properties 表中的属性列表(键和元素对)写入输出流
prop.store(fos, "Update '" + parameterName + "' value");
} catch (IOException e) {
System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");
}

}

5、测试

public static void main(String[] args) throws IOException {
System.out.println(Configuration.getValue("saveDays"));
System.out.println(new File("system.properties").getPath());
//注意需要绝对路径 提供字符串做参数的话,new FileInputStream需要写绝对路径。
Configuration.readProperties("D:\\myeclipseWorkplace\\test\\src\\load\\proptertyFIle\\system.properties");

System.out.println(System.getProperty("user.dir"));

Configuration.writeProperties("D:\\myeclipseWorkplace\\test\\src\\load\\proptertyFIle\\system.properties", "insert", "this is a test data");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值