`

properties配置文件读写操作工具类

阅读更多

java对properties配置文件的读写操作工具类:

代码如下:

 

package com.syxp.moa.message.weiguiwailian.common;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

import org.apache.log4j.Logger;

/**
 * properties文件读写操作工具类
 * @author 常宝龙
 *
 */
public class ReadWriteTools {

	//属性文件路径
	private static String propertiesPath ;
	private static Logger logger = Logger.getLogger(ReadWriteTools.class);
	static {
		//获取当前路径
		propertiesPath=System.getProperty("user.dir")+"/conf/weiguilianjie.properties";
	}
	
	/**
	 * 根据主键key读取主键的值value
	 * @param key:键
	 * @param filePath:属性文件路径
	 */
	
	public static String readValue(String propertiesPath,String key){
		Properties properties = new Properties();
		try{
			InputStream is = new BufferedInputStream(new FileInputStream(propertiesPath));
			properties.load(is);
			String value = properties.getProperty(key);
			is.close();
			return value;
		}catch(Exception e){
			logger.error("读取配置文件键值发生错误!",e);
			return null;
		}
	}
	
	/**
	 * 根据主键key读取主键的值value
	 * @param key:键
	 */
	
	public static String readValue(String key){
		Properties properties = new Properties();
		try{
			InputStream is = new BufferedInputStream(new FileInputStream(propertiesPath));
			properties.load(is);
			String value = properties.getProperty(key);
			is.close();
			return value;
		}catch(Exception e){
			logger.error("读取配置文件键值发生错误!",e);
			return null;
		}
	}
	
	/**
	 * 更新(或插入)一对properties信息(主键及其键值)
	 * 如果该主键已经存在,更新该主键的值;
	 * 如果该主键不存在,则插件一对键值。
	 * @param keyName:键名
	 * @param keyValue:键值
	 */
	
	public static void writeProperties(String keyName,String keyValue){
		try{
			// 调用 HashTable 的方法 put,使用 getProperty 方法提供并行性。
            // 强制要求为属性的键和值使用字符串。返回值是 HashTable 调用 put 的结果。
			//读配置文件路径
			Properties properties = new Properties();
			properties.load(new FileInputStream(propertiesPath));
			OutputStream os = new FileOutputStream(propertiesPath);
			properties.setProperty(keyName, keyValue);
			 // 以适合使用 load 方法加载到 Properties 表中的格式,
            // 将此 Properties 表中的属性列表(键和元素对)写入输出流
			properties.store(os, "Update '" + keyName + "' value");
			os.close();
		}catch(FileNotFoundException e){
			logger.error("配置文件路径没有找到!",e);
		}catch(IOException e){
			logger.error("属性文件更新错误",e);
		}finally{
		
		}
	}
	
	//测试代码
	
	public static void main(String[] args) {
		System.out.println("readValue==" + readValue("id"));
		writeProperties("id", "5");
		System.out.println("readValue==" + readValue("id"));
		System.out.println("更新配置文件成功!");
	}
}

 

此例子中,properties配置文件需要放在classpath下的conf目录中,并且其中包含id 这个key

分享到:
评论

相关推荐

    超级多的C#辅助类大全

    超级多的C#辅助类大全 网上有各式各样的帮助类,公共类,但是比较零碎,经常有人再群里或者各种社交账号上问有没有这个helper,那个...83. 配置文件操作类 84. 阿里云 85. 随机数类 86. 页面辅助类 87. 验证码

    Visual C++网络通信编程实用案例精选_7

    116 4.2.1 实现原理 116 4.2.2 实例实现 117 4.3 将应用程序加入到IE工具栏 121 4.3.1 实现原理 122 4.3.2 实例实现 123 4.4 超级链接的实现 127 4.4.1 实现原理 127 4.4.2 ...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    11.5.1用RandomAccessFile类进行文件读写 11.5.2使用Properties类 11.6小结 第12章多线程开发 12.1认识多线程 12.1.1为什么需要多线程 12.1.2继承Thread类开发多线程 12.1.3实现Runnable接口开发多线程 ...

    深入浅出MFC【侯捷】

    配置GDI绘图工具 尺寸与方向:关于映射方式(坐标系统) 分页 页眉与页脚 动态计算页码 打印预览(Print Preview) 本章回顾 第13章 多重文件与多重显示 MDI和SDI 多重显示(Multiple Views) 窗口的动态切分 窗口的...

    深入浅出MFC 2e

    新文件的档案读写操作 第14章 MFC多线程程序设计 从操作系统层面看线程 三个观念:模块、行程和线程 线程优先级(Priority) 线程调度(Scheduling) Thread Context 从程序设计层面看线程 Worker Threads和UI ...

    侯捷- -深入浅出MFC

    新文件的档案读写操作 第14章 MFC多线程程序设计 从操作系统层面看线程 三个观念:模块、行程和线程 线程优先级(Priority) 线程调度(Scheduling) Thread Context 从程序设计层面看线程 Worker Threads和UI ...

    ASP.NET2.0高级编程(第4版)1/6

    27.1.4 检测配置文件的变化980 27.1.5 配置文件的格式980 27.2 公共配置设置981 27.2.1 连接字符串981 27.2.2 配置会话状态982 27.2.3 编译配置985 27.2.4 浏览器的功能987 27.2.5 定制错误989 27.2.6 身份验证990 ...

    jeesuite-libs-其他

    由(jeesuite-admin)输出兼容遗留kafka系统、支持发送和接收无封装的消息mybatis模块代码生成、自动CRUD、可无缝对接mybaits增强框架Mapper基于properties配置多数据源支持,无需修改XML读写分离,事务内操作强制读...

    NHibernate参考文档 2.0.0 chm

    3.8. XML配置文件 4. 持久化类(Persistent Classes) 4.1. 一个简单的POCO例子 4.1.1. 为持久化成员变量声明读写属性 4.1.2. 实现一个默认的构造器(constructor) 4.1.3. 提供一个标识属性(identifier property)...

    NHibernate中文帮组文档(2008.11月更新)

    3.8. XML配置文件 4. 持久化类(Persistent Classes) 4.1. 一个简单的POCO例子 4.1.1. 为持久化成员变量声明读写属性 4.1.2. 实现一个默认的构造器(constructor) 4.1.3. 提供一个标识属性(identifier property)...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    11.2 配置数据源控件的高速缓存 321 11.3 存储连接信息 321 11.4 使用绑定的列表控件和数据源控件 324 11.4.1 GridView 325 11.4.2 编辑GridView中的数据行 333 11.4.3 删除GridView数据 337 11.4.4 ...

    低清版 大型门户网站是这样炼成的.pdf

    2.2.2 struts 2属性配置文件struts.properties详解 55 2.2.3 struts 2核心配置文件struts.xml详解 57 2.3 struts 2应用开发实务 61 2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建...

    asp.net知识库

    常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN...

    Java范例开发大全 (源程序)

     实例147 随机读写Java类文件 221  第3篇 Java面向对象编程  第8章 面向对象(教学视频:72分钟) 226  8.1 类 226  实例148 简单的通讯录类 226  实例149 简单的长度单位转换类 227  实例150 卡车和...

    java范例开发大全(pdf&源码)

    实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 226 实例149 简单的长度单位转换类 227 实例150 卡车和卡车司机之间的关系 229...

Global site tag (gtag.js) - Google Analytics