使用java读取配置文件(ini、properties)

JDK自带的Properties可以读取properties类型的文件,但是对于ini文件进行读取时遇到转义字符时会有问题,例如当遇到STOREPATH = d:\test\,用Properties类读取时会将\t当成一个TAB来处理,因此自己写了一个简单读取配置文件的类,功能并不完善,对与ini文件中不同section中同名属性并没有做处理。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public final class ConfigUtils {
	public static Map<String, String> propMap = null;
	
	/** 初始化 */
	public static void init(String path){
		propMap = new HashMap<String, String>();
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(path));
			String line = "";
			while((line = br.readLine()) != null){
				if(line.indexOf("=") != -1 && !line.trim().startsWith("#")
						 && !line.trim().startsWith("//")){
					String[] lineArr = line.split("=");
					propMap.put(lineArr[0].trim(), lineArr[1].trim());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 获取所有键值对组成的Map
	 * @param path 配置文件所在路径
	 * @return
	 */
	public static Map<String, String> getPropMap(String path){
//		if(propMap == null || propMap.isEmpty()){
		init(path);
//		}
		
		return propMap;
	}
	
	/**
	 * 获取属性值
	 * @param path 配置文件所在路径
	 * @param key 属性名
	 * @return
	 */
	public static String getPropValue(String path, String key){
//		if(propMap == null || propMap.isEmpty()){
		init(path);
//		}
		
		return propMap.get(key);
	}
	
	/**
	 * 设置某个属性的值
	 * @param path
	 * @param key
	 * @param value
	 */
	public static void setPropValue(String path, String key, String value){
		Map<String, String> map = new HashMap<String, String>();
		map.put(key, value);
		setPropValues(path, map);
	}
	
	/**
	 * 根据Map设置属性
	 * @param path
	 * @param map
	 */
	public static void setPropValues(String path, Map<String, String> map){
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			br = new BufferedReader(new FileReader(path));
			
			StringBuffer sb = new StringBuffer();
			String line = "";
			// 读取文件并对替换文件内容
			while((line = br.readLine()) != null){
				if(line.indexOf("=") != -1 && !line.trim().startsWith("#")
						 && !line.trim().startsWith("//")){
					String[] lineArr = line.split("=");
					String key = lineArr[0].trim();
					String newValue = map.get(key);
					if(null != newValue && !"".equals(newValue)){
						sb.append(key).append(" = ").append(newValue).append("\r\n");
					}else{
						sb.append(line).append("\r\n");
					}
				}else{
					sb.append(line).append("\r\n");
				}
			}
			br.close();
			bw = new BufferedWriter(new FileWriter(path));
			// 写入文件
			bw.write(sb.toString());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
				bw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	


	/** */
	/**
	 * 程序测试
	 */
	public static void main(String[] args) {

	}
}


 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JavaProperties类是一种与ini文件格式相似的配置文件ini文件用于保存配置信息,它由一系列的键值对组成,每个键值对都保存着一个配置项的名称和对应的值。 JavaProperties类也是用来保存配置信息的,它提供了一种简单的方式来存储和读取配置数据。Properties类同样使用键值对的形式来保存数据,其中键是一个唯一的字符串,而值可以是任意类型的数据。 与ini文件类似,Properties文件可以通过文本编辑器来创建和修改,也可以通过Java代码来读取和写入。 在Java中,可以使用Properties类来加载和保存配置文件。通过Properties的load方法可以加载配置文件,将配置文件中的键值对加载到Properties对象中。而通过Properties的store方法可以将Properties对象中的键值对保存到配置文件中。 与ini文件类似,Properties类中的键值对是按照顺序进行存储和读取的。可以通过getProperty方法来获取指定键对应的值,也可以使用setProperty方法来设置指定键的值。此外,还可以通过getProperty方法的默认参数来设置默认值,当指定的键不存在时,将返回默认值。 总结来说,JavaProperties类与ini文件具有类似的配置功能,提供了一种简单的方式来保存和读取配置信息。无论是通过文本编辑器还是通过Java代码,都可以方便地创建和修改Properties文件。通过getProperty和setProperty方法,能够方便地获取和设置配置项的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值