package com.connect;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class RWProperties {
private Properties properties;
/**
* 配置文件的完整路径
*/
private String filePath;
/**
* 初始化RWProperties
*
* @param propertyFilePath
* 属性配置文件的完整路径,如:"com/config/jdbc.properties"
*
* @return RWProperties的实例
*/
public RWProperties(String propertyFilePath){
filePath=propertyFilePath;
properties=getProperties(propertyFilePath);
}
/**
* 获得Key值所对应的Value值
*
* @param key 属性配置文件的Key值
* @return Key值所对应的Value值
*/
public String getValue(String key){
String value="";
if(properties.containsKey(key)){
value=properties.getProperty(key);
return value;
}else{
return value;
}
}
/**
* 修改属性配置文件
*
* @param key
* @param value
* @param filePath
* 属性配置文件的完整路径
* @return 修改成功返回true,失败则返回false
*/
public boolean setProperty(String key, String value){
FileOutputStream out=this.getFileOutputStream(filePath);
properties.setProperty(key, value);
boolean flag=false;
try{
properties.store(out, null);
flag=true;
}catch(IOException ex){
ex.printStackTrace();
}finally{
if(out!=null){
try{
out.flush();
out.close();
}catch(IOException ex){
ex.printStackTrace();
clear();
}finally{
out=null;
}
}
}
return flag;
}
/**
* 移除属性配置文件中的某个属性(key-value)
*
* @param key
* @return 成功返回true,失败返回false
*/
public boolean removeProperty(String key){
FileOutputStream out=this.getFileOutputStream(filePath);
properties.remove(key);
boolean flag=false;
try{
properties.store(out, null);
flag=true;
}catch(IOException ex){
ex.printStackTrace();
}finally{
if(out!=null){
try{
out.flush();
out.close();
}catch(IOException ex){
ex.printStackTrace();
clear();
}finally{
out=null;
}
}
}
return flag;
}
/**
* 释放资源
*/
public void clear(){
if(properties!=null){
properties.clear();
}
}
/**
* 返回加载了配置文件的Properties对象
*
* @param propertyFilePath
* 属性配置文件的完整路径,如:"com/config/jdbc.properties"
*
* @return java.util.Properties
*/
private Properties getProperties(String propertyFilePath){
Properties properties=new Properties();
InputStream in=null;
try{
in=RWProperties.class.getClassLoader().getResourceAsStream(propertyFilePath);
properties.load(in);
}catch(NullPointerException ex){
System.out.println("读取属性文件-->失败!- 原因:文件路径错误或文件不存在");
ex.printStackTrace();
clear();
}catch(IOException ex){
System.out.println("装载文件-->失败!");
ex.printStackTrace();
clear();
}finally{
if(in!=null){
try{
in.close();
}catch(IOException ex){
ex.printStackTrace();
}finally{
in=null;
}
}
}
return properties;
}
/**
* 返回已经加载了配置文件的文件输出流
*
* @param propertyFilePath
* 属性配置文件的完整路径
* @return java.io.FileOutputStream out
*/
private FileOutputStream getFileOutputStream(String propertyFilePath){
FileOutputStream out=null;
String filePath=null;
filePath=RWProperties.class.getClassLoader().getResource(propertyFilePath).getFile();
//如果URL中含有"/"字符,将会被去掉
filePath=filePath.replace("/", "");
//如果URL中含有空格,则会被"%20"替换,所以要将它替换回来
filePath=filePath.replace("%20", " ");
try{
out=new FileOutputStream(filePath);
}catch(FileNotFoundException ex){
System.out.println("获取文件输出流-->失败!");
ex.printStackTrace();
clear();
}
return out;
}
}
本文摘自:http://vipbooks.iteye.com/blog/607196
本文介绍了一个Java类RWProperties,用于实现属性文件的读写操作,包括读取、修改及删除属性。
287

被折叠的 条评论
为什么被折叠?



