哈哈,好久没有来了,这段时间在武汉出差,所以都没有什么时间来上网了,好想回家啊!
今天发一个我以前写的读写属性配置文件的类,这个类会在我以后要发的一些类中用到,所以就先把它发上来了!
这个类非常的通用,而且很灵活,要读写的配置文件可以放在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;
}
}
分享到:
相关推荐
在Java编程中,读写`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息、设置或环境变量。本文将深入探讨如何在Java中高效地处理`.properties`文件,包括读取、写入以及更新其内容。我们将参考提供的...
另一方面,Properties文件是Java平台上的传统配置文件格式,主要用于存储键值对,简洁易读,适用于小型配置需求。 XML文件的解析通常涉及以下步骤: 1. **加载XML文档**:通过Java的`java.io`或`javax.xml....
这些给定的文件名表明它们是Java编程语言中的工具类,用于处理XML配置文件的读取和管理。以下是对这些类可能包含的功能的详细解释: 1. **PortalConfig.java**:这个类可能专门用于处理与门户应用相关的配置信息。...
本文将详细介绍如何在Java中使用Properties配置文件进行读写操作。 首先,Properties文件是一种键值对(key-value pairs)的存储方式,其中每行都包含一个键和一个值,两者之间用等号(=)分隔,注释则以#开头。...
txt文件则是一种通用文本文件,可以用于任意形式的数据存储,配置文件也不例外。开发者可以根据需要自定义其结构和解析规则。 properties文件是Java特有的配置文件格式,主要用于存储键值对,它以.properties为扩展...
项目中的`conf.properties`、`backupdb.properties`和`reg.properties`可能是配置文件,通常用于存储应用的配置信息,如数据库连接参数、系统设置等。`print.properties`可能包含了打印相关的配置。`org`和`META-INF...
本文将探讨一个基于Java的Excel导入通用类源码,它利用了反射技术、JXL库以及properties配置文件,旨在提供一种灵活且可扩展的数据导入导出解决方案。 首先,我们来看“反射应用”。在Java中,反射是一种强大的机制...
Properties类是Java标准库中的一个类,主要用于处理属性键值对,常用于配置文件的读写。在这个场景下,它被用来将日志信息以键值对的形式持久化到文件中,便于后续检索和分析。 以下是使用Properties存储日志的基本...
`FileInputStream`和`FileOutputStream`是用于文件读写的流类,它们分别用于读取和写入文件。而`InputStream`是一个通用的字节输入流的父接口。 文档还展示了如何使用`FileInputStream`和`FileOutputStream`来操作...
本文将深入探讨“写配置文件”的相关知识点,包括配置文件的常见类型、结构、语法以及如何进行读写操作。 1. **配置文件的常见类型** - **INI文件**:如File_ini_RW所示,INI文件是最传统的配置文件格式,由节...
1. `app.config`:这是.NET应用程序的配置文件,通常用于存储应用的设置和连接信息。 2. `DxfExportExample.cs`:这可能是一个示例代码文件,展示了如何使用CADlib进行DXF文件的导出操作。 3. `DxfExportExampleCS ...
- **.classpath**:Eclipse项目的类路径配置文件。 这些文件和目录表明,这是一个Android工程的源代码结构,其中可能包含了实现NFC读写功能的相关代码。开发者可能需要分析`src`目录下的Java类,查找与NFC相关的类...
在描述中提到的"ftpstatus.properties"文件,这是一个属性配置文件,通常用于存储程序运行时的状态或者配置信息。在Java FTP程序中,它可能包含关于FTP连接状态、错误代码或提示信息等的定义,方便程序在运行过程中...
首先,`App.config` 文件是 C# 应用程序的标准配置文件,其中包含了连接字符串和其他应用程序设置,如数据库路径、日志配置等。在 SQLite 的上下文中,它可能会包含指向 SQLite 数据库文件的路径,以及用于连接...
这个项目的文件名"demo-boot-multdata_new"可能包含了演示SpringBoot多数据源的示例代码,其中包括了配置文件、Mapper接口、实体类、Service层以及Controller层的相关实现。通过学习和理解这个项目,开发者可以掌握...
`App.config`文件通常用于存储应用程序的配置信息,如串口设置或MODBUS参数。你可以在这里定义默认的串口配置,例如: ```xml <!-- 其他设置 --> ``` 在`Program.cs`中,你可能会找到程序的入口点,...
14. **`java.util.Properties`**:用于读写配置文件,常用于存储应用程序的配置参数。 15. **`java.util.PriorityQueue`**:优先队列,内部实现为堆,可以自动维护元素的排序。 以上仅是部分可能包含的工具类,...
- `logging.properties`:这是Tomcat的日志配置文件,位于`$CATALINA_BASE/conf`目录下。你可以通过修改这个文件来定制日志输出的行为,例如设置日志级别(INFO, WARN, ERROR等),定义不同的日志处理器...
11. **`java.util.Properties`**:用于读写配置文件,通常用于存储应用程序的配置信息。 12. **`java.util.concurrent`** 包:提供了线程安全的数据结构和并发工具类,如`ConcurrentHashMap`, `ExecutorService`, `...
对于“属性配置文件”,这可能是指服务器端的配置文件,比如log4j.properties用于日志记录,或者是服务器的启动配置,如application.properties(Spring Boot)。 前端的JavaScript部分,由于浏览器安全限制,不能...