读写properties配置文件时带上注释

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java使用jdk自带的类操作properties配置文件,特别是更改文件后会把注释全部删掉,再读时会不知道配置是什么意思,下面这个类是我自己写的不删除注释操作properties的类。

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStreamWriter;

import java.io.Reader;

import java.io.Writer;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.LinkedHashMap;

import java.util.Map;

import java.util.Properties;

import java.util.Set;

/**

* 读取Properties配置文件,同时读出注释。注释在jdk源方法的LineReader中忽略,

*

* 此处改造LineReader,并添加存放的变量map

*

* 同时新加了getPropertyAndComment(key)方法,返回的字符串:如果有注释则为:值#注释,如果无注释,则为:值

*

* 写入Properties方法是直接从网上下载的方法

* @author liuwei

* */

public class ReadAndWriteProperties extends Properties {

/**

*

*/

private static final long serialVersionUID = 1L;

public static void main(String[] args) throws Exception {

//写入

// ReadAndWriteProperties properties = new ReadAndWriteProperties();

// FileOutputStream fileOutputStream = new FileOutputStream(

// "D:/test.properties", true);

// OutputStreamWriter writer = new OutputStreamWriter(fileOutputStream);

// for (int i = 1; i < 10; i++) {

// String string = String.valueOf(i);

// properties.setP("Name" + string, string, "the name of " + string);

// }

// properties.orderStore(writer, "This is a test process...");

//读取

ReadAndWriteProperties props = new ReadAndWriteProperties();

File file = new File("E:\\test\\CemsMiddleware.properties");

InputStream in = new FileInputStream(file);

props.load(in);

Set keySet = props.keySet();

Object value = null;

for (Object key : keySet) {

// value = props.getProperty((String) key);

value = props.getPropertyAndComment((String) key);

System.out.println(key + ":" + value);

}

}

private LinkedHashMap commentMap = new LinkedHashMap();

//首先是写相关--------------------------------------

/**

* Constructor.

*/

public ReadAndWriteProperties() {

super();

}

/**

* Constructor.

*

* @param properties

* the java propertis.

*/

public ReadAndWriteProperties(Properties properties) {

super(properties);

// Initialize the comment.

Iterator iterator = properties.keySet().iterator();

while (iterator.hasNext()) {

Object key = iterator.next();

mentMap.put((String) key, null);