`
vipbooks
  • 浏览: 148970 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类

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

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

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

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

2010-10-28
哈哈,好久没有来发文章了,今天来更新一下以前发过的代码:
我对RWProperties.java进行了一些完善和修改,修正了修改配置文件的一个Bug,改进了读取配置文件的效率,新增了移除属性的方法,完善了注释。
大家如果发现有什么Bug希望能及时搞出来,以便完善这里的代码。

/*
 * @(#)RWProperties.java  2010-10-28
 * 
 * Copyright 2010 BianJing,All rights reserved.
 */
package test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 用于读写Property属性配置文件的类
 * 
 * @author BianJing<br/>
 *         E-mail:vipbooks@163.com
 * @version 0.9 2010-10-28
 */
public class RWProperties {
    private Properties properties;

    /** 配置文件的完整路径 */
    private String filePath;

    /**
     * 初始化RWProperties
     * 
     * @param propertyFilePath
     *            属性配置文件的完整路径,
     *            如:"com/pagination/config/PaginationConfig.properties"
     * @return RWProperties的实例
     */
    public RWProperties(String propertyFilePath) {
        filePath = propertyFilePath;
        properties = getProperties(propertyFilePath);
    };

    /**
     * 获得Key值所对应的Value值。
     * 
     * @param key
     *            属性配置文件的Key值
     * @return Key值所对应的Value值
     */
    public String getProperty(String key) {
        return properties.getProperty(key);
    }

    /**
     * 修改属性配置文件
     * 
     * @param key
     *            属性配置文件的Key值
     * @param value
     *            属性配置文件的value值
     * @param propertyFilePath
     *            属性配置文件的完整路径,
     *            如:"com/pagination/config/PaginationConfig.properties"
     * @return 修改成功返回true,失败则返回false
     */
    public boolean setProperty(String key, String value) {
        FileOutputStream fos = getFileOutputStream(filePath);

        properties.setProperty(key, value);
        boolean flag = false;
        try {
            properties.store(fos, null);
            flag = true;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.flush();
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    close();
                } finally {
                    fos = null;
                }
            }
        }

        return flag;
    }

    /**
     * 移除属性配置文件中的某个属性
     * 
     * @param key
     *            属性配置文件的Key值
     * @return 移除成功返回true,失败则返回false
     */
    public boolean removeProperty(String key) {
        FileOutputStream fos = getFileOutputStream(filePath);

        properties.remove(key);
        boolean flag = false;
        try {
            properties.store(fos, null);
            flag = true;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.flush();
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    close();
                } finally {
                    fos = null;
                }
            }
        }

        return flag;
    }

    /**
     * 释放资源
     */
    public void close() {
        if (properties != null) {
            properties.clear();
        }
    }

    /**
     * 返回加载了配置文件的Properties对象
     * 
     * @param propertyFilePath
     *            属性配置文件的完整路径,
     *            如:"com/pagination/config/PaginationConfig.properties"
     * @return java.util.Properties
     */
    private Properties getProperties(String propertyFilePath) {
        Properties properties = new Properties();
        InputStream is = null;
        try {
            is = RWProperties.class.getClassLoader().getResourceAsStream(
                    propertyFilePath);

            properties.load(is);
        } catch (NullPointerException e) {
            e.printStackTrace();
            close();
        } catch (IOException e) {
            e.printStackTrace();
            close();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    is = null;
                }
            }
        }

        return properties;
    }

    /**
     * 返回已经加载了配置文件的文件输出流
     * 
     * @param propertyFilePath
     *            属性配置文件的完整路径,
     *            如:"com/pagination/config/PaginationConfig.properties"
     * @return java.io.FileOutputStream
     */
    private FileOutputStream getFileOutputStream(String propertyFilePath) {
        FileOutputStream fos = null;
        String filePath = null;

        filePath = RWProperties.class.getClassLoader().getResource(
                propertyFilePath).getFile();
        filePath = filePath.replaceFirst("/", "");
        // 如果URL地址中含有空格,则空格会被"%20"替换,所以要将它替换回来
        filePath = filePath.replaceAll("%20", " ");
        try {
            fos = new FileOutputStream(filePath);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            close();
        }

        return fos;
    }
}

1
0
分享到:
评论

相关推荐

    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文件是最传统的配置文件格式,由节...

    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 &lt;!-- 其他设置 --&gt; ``` 在`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`, `...

    jar.rar

    对于“属性配置文件”,这可能是指服务器端的配置文件,比如log4j.properties用于日志记录,或者是服务器的启动配置,如application.properties(Spring Boot)。 前端的JavaScript部分,由于浏览器安全限制,不能...

Global site tag (gtag.js) - Google Analytics