用于读写Properties属性配制文件的通用类

哈哈,好久没有来了,这段时间在武汉出差,所以都没有什么时间来上网了,好想回家啊!
今天发一个我以前写的读写属性配置文件的类,这个类会在我以后要发的一些类中用到,所以就先把它发上来了!
这个类非常的通用,而且很灵活,要读写的配置文件可以放在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:vipbooks@163.com
* @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;
}
}

展开阅读全文

Python数据分析与挖掘

01-08
92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元   为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。       从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。    本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。   二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。   三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。   四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。   五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分、聚、预测3大型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值