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

Posted on 2010-03-03 22:35  FreeSkyCD  阅读(401)  评论(0编辑  收藏  举报
   哈哈,好久没有来了,这段时间在武汉出差,所以都没有什么时间来上网了,好想回家啊!
   今天发一个我以前写的读写属性配制文件的类,这个类会在我以后要发的一些类中用到,所以就先把它发上来了!
   这个类非常的通用,而且很灵活,要读写的配制文件可以放在ClassPath下的任意一个目录中,只要传入文件路径就可以了!
    希望这个能够对大家有些帮助,也希望大家可以多提建议和想法,让我们大家在JavaEye这个大家庭中一起共同进步!

     哦,我还想问一个问题,可以用手机上JavaEye吗?

     该类在“Database”分类中的《用于JDBC操作数据库的公共类》文章中用到了!

/*
 * @(#)RWProperties.java  2009-09-28
 * 
 * Copyright 2009 BianJing,All rights reserved.
 */
package com.pagination.config;

import java.util.*;
import java.io.*;
/**
 * 用于读写Property属性配制文件的Singleton类
 * @author BianJing<br/>
 *         E-mail:vipbooks@163.com
 * @version 0.6 2009-09-28
 */
public class RWProperties {
	
	private static Properties property = new Properties();
	
	private RWProperties(){};

	/**
	 * 通过属性配制文件的Key值获得相应的Value值
	 * @param key 属性配制文件的Key值
	 * @param propertyFilePath 属性配制文件的完整路径,如:
     * "com/test/config/database.properties"
	 * @return Key值所对应的Value值
	 */
	public static String getProperty(String key,String propertyFilePath){
		String value = null;		
		InputStream is = null;
		try {
			is = RWProperties.class.getClassLoader().getResourceAsStream(propertyFilePath);
			property.load(is);
			value = property.getProperty(key);
			
		} catch (NullPointerException e) {
			System.out.println("属性文件没有找到!");
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(is != null){
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				is = null;
			}
		}
		
		return value;
	}
	/**
	 * 修改属性配制文件
	 * @param key 属性配制文件的Key值
	 * @param value 属性配制文件的value值
	 * @param propertyFilePath 属性配制文件的完整路径
	 * @return 如果属性文件修改成功返回true,失败则返回false
	 */
	public static boolean setProperty(String key,String value,String propertyFilePath){
		FileOutputStream fos = null;
		boolean flag = false;
		try {
			String filePath = RWProperties.class.getClassLoader().getResource(propertyFilePath).getFile();
			filePath = filePath.replaceFirst("/", "");
			// 如果URL地址中含有空格,则空格会被"%20"替换,所以要将它替换回来
			filePath = filePath.replaceAll("%20", " ");
			fos = new FileOutputStream(filePath);
			String str = (String)property.setProperty(key, value);
			
			property.store(fos, str);
			
			flag = true;
		} catch (NullPointerException e) {
			System.out.println("属性文件没有找到!");
			e.printStackTrace();
		} catch (IOException e){
			System.out.println("属性文件修改失败!");
			e.printStackTrace();
		} finally {
			if(fos != null){
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				fos = null;
			}
		}
		
		return flag;
	}
}



已有 0 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐



Copyright © 2024 FreeSkyCD
Powered by .NET 8.0 on Kubernetes