`

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

阅读更多

 

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

分享到:
评论
1 楼 仅此而已 2011-03-09  
写的非常不错。 留着以后用

相关推荐

    java读写xxx.properties文件实用小例

    在Java编程中,读写`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息、设置或环境变量。本文将深入探讨如何在Java中高效地处理`.properties`文件,包括读取、写入以及更新其内容。我们将参考提供的...

    解析XML和Propertites配置文件

    另一方面,Properties文件是Java平台上的传统配置文件格式,主要用于存储键值对,简洁易读,适用于小型配置需求。 XML文件的解析通常涉及以下步骤: 1. **加载XML文档**:通过Java的`java.io`或`javax.xml....

    xml文件的配置读取工具类

    这些给定的文件名表明它们是Java编程语言中的工具类,用于处理XML配置文件的读取和管理。以下是对这些类可能包含的功能的详细解释: 1. **PortalConfig.java**:这个类可能专门用于处理与门户应用相关的配置信息。...

    Java中使用Properties配置文件的简单方法

    本文将详细介绍如何在Java中使用Properties配置文件进行读写操作。 首先,Properties文件是一种键值对(key-value pairs)的存储方式,其中每行都包含一个键和一个值,两者之间用等号(=)分隔,注释则以#开头。...

    java配置文件 beta v3.0

    txt文件则是一种通用文本文件,可以用于任意形式的数据存储,配置文件也不例外。开发者可以根据需要自定义其结构和解析规则。 properties文件是Java特有的配置文件格式,主要用于存储键值对,它以.properties为扩展...

    自己封装的一些文件(夹)操作和txt文件读写的工具类 哈哈(ExtUtil0.2)

    项目中的`conf.properties`、`backupdb.properties`和`reg.properties`可能是配置文件,通常用于存储应用的配置信息,如数据库连接参数、系统设置等。`print.properties`可能包含了打印相关的配置。`org`和`META-INF...

    Excel导入通用类 源码

    本文将探讨一个基于Java的Excel导入通用类源码,它利用了反射技术、JXL库以及properties配置文件,旨在提供一种灵活且可扩展的数据导入导出解决方案。 首先,我们来看“反射应用”。在Java中,反射是一种强大的机制...

    Android代码-androidjava通用代码关于用properties存储打印的Log.zip

    Properties类是Java标准库中的一个类,主要用于处理属性键值对,常用于配置文件的读写。在这个场景下,它被用来将日志信息以键值对的形式持久化到文件中,便于后续检索和分析。 以下是使用Properties存储日志的基本...

    java操作属性文件.pdf

    `FileInputStream`和`FileOutputStream`是用于文件读写的流类,它们分别用于读取和写入文件。而`InputStream`是一个通用的字节输入流的父接口。 文档还展示了如何使用`FileInputStream`和`FileOutputStream`来操作...

    写配置文件

    本文将深入探讨“写配置文件”的相关知识点,包括配置文件的常见类型、结构、语法以及如何进行读写操作。 1. **配置文件的常见类型** - **INI文件**:如File_ini_RW所示,INI文件是最传统的配置文件格式,由节...

    读取文件数据并解析成bean实体类

    这可以通过构造函数参数、静态方法参数或者配置文件来实现。 总的来说,从文件读取数据并解析成Bean实体类涉及多个层次的技术,包括基础的文件I/O、数据解析、对象映射以及高级的工具类设计。开发者需要熟悉这些...

    DWG,DXF文件读写

    1. `app.config`:这是.NET应用程序的配置文件,通常用于存储应用的设置和连接信息。 2. `DxfExportExample.cs`:这可能是一个示例代码文件,展示了如何使用CADlib进行DXF文件的导出操作。 3. `DxfExportExampleCS ...

    android通过NFC读写数据

    - **.classpath**:Eclipse项目的类路径配置文件。 这些文件和目录表明,这是一个Android工程的源代码结构,其中可能包含了实现NFC读写功能的相关代码。开发者可能需要分析`src`目录下的Java类,查找与NFC相关的类...

    javaFtp.rar_FTP界面_FtpStatus.properties_JAVAFTP_java f_java ftp

    在描述中提到的"ftpstatus.properties"文件,这是一个属性配置文件,通常用于存储程序运行时的状态或者配置信息。在Java FTP程序中,它可能包含关于FTP连接状态、错误代码或提示信息等的定义,方便程序在运行过程中...

    c# sqlite 读写应用项目

    首先,`App.config` 文件是 C# 应用程序的标准配置文件,其中包含了连接字符串和其他应用程序设置,如数据库路径、日志配置等。在 SQLite 的上下文中,它可能会包含指向 SQLite 数据库文件的路径,以及用于连接...

    springboot + mybatis(通用mapper) + druid多数据源

    这个项目的文件名"demo-boot-multdata_new"可能包含了演示SpringBoot多数据源的示例代码,其中包括了配置文件、Mapper接口、实体类、Service层以及Controller层的相关实现。通过学习和理解这个项目,开发者可以掌握...

    c#读写三菱PLC PLCtest.7z

    `App.config`文件通常用于存储应用程序的配置信息,如串口设置或MODBUS参数。你可以在这里定义默认的串口配置,例如: ```xml <!-- 其他设置 --> ``` 在`Program.cs`中,你可能会找到程序的入口点,...

    Java常用工具类大全,工作5年精心整理.zip

    14. **`java.util.Properties`**:用于读写配置文件,常用于存储应用程序的配置参数。 15. **`java.util.PriorityQueue`**:优先队列,内部实现为堆,可以自动维护元素的排序。 以上仅是部分可能包含的工具类,...

    tomcat日志文件

    - `logging.properties`:这是Tomcat的日志配置文件,位于`$CATALINA_BASE/conf`目录下。你可以通过修改这个文件来定制日志输出的行为,例如设置日志级别(INFO, WARN, ERROR等),定义不同的日志处理器...

    java常用工具类

    11. **`java.util.Properties`**:用于读写配置文件,通常用于存储应用程序的配置信息。 12. **`java.util.concurrent`** 包:提供了线程安全的数据结构和并发工具类,如`ConcurrentHashMap`, `ExecutorService`, `...

Global site tag (gtag.js) - Google Analytics