`
收藏列表
标题 标签 来源
java 读写properties配置文件 java 读写properties配置文件
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

/**
 * 测试获取properties配置文件的内容,一定要存在这样的properties
 * 要显示具体的数据
 * @class PropertiesBean
 * @description 
 * @author 李智慧
 * @copyRight copyright(c) 2011 广东南航易网通电子商务有限公司,Rights Reserved
 * @time Dec 6, 2011 4:30:24 PM
 */
public class PropertiesBean {
		
	public static void main(String[] args) {
//		System.out.println(PropertiesBean.class.getClassLoader().getResource("config.properties"));
		String result = PropertiesBean.readPropertiesValue("config.properties","love");
		System.out.println(result);
		Boolean b = PropertiesBean.writePropertiesValue("config.properties", "职业", "微软集团总裁");
		System.out.println(b);
	}
	
	/**
	 * 获取配置文件 对应key的value值。
	 * 
	 * @param propertiesName
	 *            具体配置文件的名称,注意:此例子的配置文件是放置在classes目录下。
	 * @param key
	 *            对应key值
	 * @return value值
	 */
	public static String readPropertiesValue(String propertiesName,String key){
		String result = "";
		Properties properties = new Properties();
		InputStream inputStream = null;
		try{
			//方式一:使用getResourceAsStream获取数据流
			inputStream = PropertiesBean.class.getClassLoader().getResourceAsStream(propertiesName); 
			//方式二:使用getResource获取url地址,然后解析出对应的绝对路径。
//			inputStream = new BufferedInputStream (new FileInputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", "")));
			properties.load(inputStream);
			//修改编码,解决中文乱码问题
//			result = new String(properties.getProperty(key).toString().getBytes("ISO8859_1"),"gbk");
			if(properties.containsKey(key)){
				result = properties.getProperty(key).toString();
			}
		}catch (Exception e) {
			result = "读取配置文件信息出现错误。";
			if(inputStream != null){
				try {
					inputStream.close();
				} catch (IOException e1) {
					result = "关闭输出流出现错误。";
				}
			}
		}
		return result;
	}
	
	/**
	 * 修改对应的键值对(如果没有的话,会是新增)
	 * 
	 * @param propertiesName
	 *            配置文件的名称,注意内容同上。
	 * @param key
	 *            对应的键值
	 * @param value
	 *            对应的value值
	 * @return 返回是否操作正確
	 */
	public static boolean writePropertiesValue(String propertiesName,String key,String value){
		boolean b = false;
		OutputStream outputStream = null;
		InputStream fis = null;
		Properties properties = new Properties();
		try{
			//打开输入流的作用是保存没有被修改的键值对,如果没有下面两行,对应的配置文件中就只有设置的键值对了。
			fis = new FileInputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", ""));
            //从输入流中读取属性列表(键和元素对)
			properties.load(fis);
			outputStream = new FileOutputStream(PropertiesBean.class.getClassLoader().getResource(propertiesName).toString().replaceAll("file:/", ""));
			properties.setProperty(key, value);
			properties.store(outputStream, "修改配置文件信息");
			b = true;
		}catch (Exception e) {
			System.out.println("写入配置文件出现错误。"+e.getMessage().toString());
		}finally{
			try {
				outputStream.close();
				fis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				System.out.println("关闭输出出入流出现问题。");
			}
		}
		return b;
	}
}
Global site tag (gtag.js) - Google Analytics