`

Java Properties 属性文件读取写入工具类

    博客分类:
  • Java
阅读更多
自己编写的一个简单工具类,方便操作属性文件

构造方法必须传入属性文件的位置,工具类会自动定位到项目的物理根目录到/Webroot后面需要传入路径,传入的路径记住以/开头。

##现在工具类未对太多的安全性验证。


package cn.net.withub.smsp.common.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import bsh.This;

import cn.net.withub.lab.SMGPLab;

/**
 * 配置文件读取和写入工具类
 * @author Jacky.Jiang
 *
 */
public class PropertiesHelper {
	private static Log logger = LogFactory.getLog(This.class); 
	
	private String project_root = "";
	private File file = null;

	
	public PropertiesHelper(String filePath) {
		//构造时获取到项目的物理根目录
		project_root = this.getClass().getResource("/").toString().replace("file:/", "");
		project_root = project_root.substring(0,project_root.indexOf("/WEB-INF"));
		
		if(filePath != null && filePath.length() > 0){
			try {
				file = new File(project_root+filePath);
				
			} catch (Exception e) {
				logger.error(e);
			}
		}
	}
	
	public String getProperties(String key){
		InputStream fis = null;
		try {
			Properties prop = new Properties();
			fis = new FileInputStream(getAbsolutePath());
			
			prop.load(fis);
			
			return prop.getProperty(key);
			
		} catch (Exception e) {
			logger.error(e);
		}finally{
			try{if(fis != null){fis.close();}}catch(Exception e){}
		}
		
		return "";
	}
	
	public void setProperties(String key,String value)throws Exception{
		Properties prop = new Properties();
		
		
		FileOutputStream outputFile = null;
		InputStream fis = null;
		try {
			//输入流和输出流要分开处理, 放一起会造成写入时覆盖以前的属性
			fis = new FileInputStream(getAbsolutePath());
			//先载入已经有的属性文件
			prop.load(fis);
			
			//追加新的属性
			prop.setProperty(key, value);
			
			//写入属性
			outputFile = new FileOutputStream(getAbsolutePath()); 
			prop.store(outputFile, "");
			
			outputFile.flush();
		} catch (Exception e) {
			logger.error(e);
			throw e;
		}finally{
			try{if(fis != null){fis.close();}}catch(Exception e){}
			try{if(outputFile != null){outputFile.close();}}catch(Exception e){}
		}
	}
	
	
	public String getAbsolutePath(){
		try {
			return file.getAbsolutePath();
		} catch (Exception e) {
			logger.error(e);
		}
		return "";
	}
}

分享到:
评论

相关推荐

    使用java读写properties文件属性

     我们要做的第一步是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 InputStream的子类FileInputStream将属性文件读取到Properties对象中,知道prop.properties的路径,我们...

    java 读取WEB-INF下文件夹中的properties文件

    非常实用的读取配置文件的小工具,专门读取WEB-INF下文件夹中的properties文件,代码简洁、亲测没有问题,适用范围广,任何类中都可调用,传入Key及可得到Value

    apron:高级属性—以更合理的方式读取和写入Java .properties文件

    以更合理的方式读取和写入Java .properties文件。 什么是围裙 Apron是一个用于读取和写入Java .properties文件的小型库。 该库的主要目标是与java.util.Properties类兼容。 不是API明智的(API完全不同),但是能够...

    免费云存储工具类——七牛云(更改配置信息,直接使用)

    云存储工具类——七牛云 第一步 导入相关依赖: ... qiniu-java-sdk ...secretKey:你的sk在这里插入图片描述把这些配置信息写在一个小配置文件(XXX.properties)中,供工具类读取 dns=你的dns accessKey=你的ak se

    POJOGenerator v1.3.3 Install(可视化POJO代码生成器最终版)

    这是一个Properties属性文件,用于保存您最后选择的皮肤名称,以便下次打开此工具 时加载您所选择的皮肤来渲染工具UI界面。 5、所有最终代码生成效果都可以在左边的代码预览区域中查看,可点击滑动箭头显示出 被...

    Android项目源码ThinkAndroid开发框架.zip

    他还包括了一个手机开发中经常应用的实用工具类, 如日志管理,配置文件管理,android下载器模块,网络切换检测等等工具。 目前ThinkAndroid主要有以下模块: MVC模块:实现视图与模型的分离。 ioc模块:android...

    Android ThinkAndroid开发框架.zip

    他还包括了一个手机开发中经常应用的实用工具类, 如日志管理,配置文件管理,android下载器模块,网络切换检测等等工具。 目前ThinkAndroid主要有以下模块: MVC模块:实现视图与模型的分离。 ioc模块:android中的...

    springmybatis

    1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 <typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/> 这个别名...

    ssh(structs,spring,hibernate)框架中的上传下载

    Tfile的Hibernate映射文件Tfile.hbm.xml放在Tfile .java类文件的相同目录下:  代码 2 领域对象映射文件 1. 2. !DOCTYPE hibernate-mapping PUBLIC 3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4. ...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    10.4.3 extendedproperties属性 414 10.4.4 创建和使用dataset对象 415 10.4.5 ado.net的datatable对象 417 10.4.6 dataset和datatable对象的高级ado.net特性 418 10.5 使用通用提供程序模型 420 10.6 ado...

    Visual.Basic.6大学教程.pdf

    15.5 向随机存取文件写入数据 469 15.6 从随机存取文件中按顺序读取数据 471 15.7 从随机存取文件中随机读取数据 474 15.8 范例:事务处理程序 477 小结 482 自测练习 483 自测练习答案 484 练习 484 第16章 面向...

    Android 常用六大框架

    1、volley ... (1) JSON,图像等的异步下载; (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和Activity和生命周期的联动(Activity结束时... (10) 一系列工具类

    Android项目源码开源的 Material Design 豆瓣客户端.zip

    DiskLRUCache 是一个只实现了同步读取写入的库,因此豆芽对其进行了包装,提供了异步读写的 API,正确实现,提高了应用的响应速度。 状态同步 由于各个界面独自获取数据,数据本身与常规的 ContentProvider 机制中...

Global site tag (gtag.js) - Google Analytics