java 读写 ini配置文件

发布时间:2020-07-02 16:46:52 作者:16521544193
来源:网络 阅读:356


代码

package org.fh.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 说明:ini文件读写操作工具类
 * 作者:FH Admin
 * 官网:www.fhadmin.org
 */
public class IniFileUtil {

	/**
	 * 从ini配置文件中读取变量的值
	 * @param file         配置文件的路径
	 * @param section      要获取的变量所在段名称
	 * @param variable     要获取的变量名称
	 * @param defaultValue 变量名称不存在时的默认值
	 * @return 变量的值
	 * @throws IOException 抛出文件操作可能出现的io异常
	 */
	public static String readCfgValue(String file, String section, String variable, String defaultValue)
			throws IOException {
		String strLine, value = "";
		BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
		boolean isInSection = false;
		try {
			while ((strLine = bufferedReader.readLine()) != null) {
				strLine = strLine.trim();
				strLine = strLine.split("[;]")[0];
				Pattern p;
				Matcher m;
				p = Pattern.compile("\\[\\w+]");// Pattern.compile("file://[//s*.*//s*//]");
				m = p.matcher((strLine));
				if (m.matches()) {
					p = Pattern.compile("\\[" + section + "\\]");// Pattern.compile("file://[//s*" + section +
																	// "file://s*//]");
					m = p.matcher(strLine);
					if (m.matches()) {
						isInSection = true;
					} else {
						isInSection = false;
					}
				}
				if (isInSection == true) {
					strLine = strLine.trim();
					String[] strArray = strLine.split("=");
					if (strArray.length == 1) {
						value = strArray[0].trim();
						if (value.equalsIgnoreCase(variable)) {
							value = "";
							return value;
						}
					} else if (strArray.length == 2) {
						value = strArray[0].trim();
						if (value.equalsIgnoreCase(variable)) {
							value = strArray[1].trim();
							return value;
						}
					} else if (strArray.length > 2) {
						value = strArray[0].trim();
						if (value.equalsIgnoreCase(variable)) {
							value = strLine.substring(strLine.indexOf("=") + 1).trim();
							return value;
						}
					}
				}
			}
		} finally {
			bufferedReader.close();
		}
		return defaultValue;
	}

	/**
	 * 修改ini配置文件中变量的值
	 * @param file     配置文件的路径
	 * @param section  要修改的变量所在段名称
	 * @param variable 要修改的变量名称
	 * @param value    变量的新值
	 * @throws IOException 抛出文件操作可能出现的io异常
	 */
	public static boolean writeCfgValue(String file, String section, String variable, String value) throws IOException {
		String fileContent, allLine, strLine, newLine;
		String getValue = null;
		BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
		boolean isInSection = false;
		boolean canAdd = true;
		fileContent = "";
		try {

			while ((allLine = bufferedReader.readLine()) != null) {
				allLine = allLine.trim();
				strLine = allLine.split(";")[0];
				Pattern p;
				Matcher m;
				p = Pattern.compile("\\[\\w+]");
				m = p.matcher((strLine));
				if (m.matches()) {
					p = Pattern.compile("\\[" + section + "\\]");
					m = p.matcher(strLine);
					if (m.matches()) {
						isInSection = true;
					} else {
						isInSection = false;
					}
				}
				if (isInSection == true) {
					strLine = strLine.trim();
					String[] strArray = strLine.split("=");
					getValue = strArray[0].trim();
					if (getValue.equalsIgnoreCase(variable)) {
						newLine = getValue + "=" + value;
						fileContent += newLine;
						while ((allLine = bufferedReader.readLine()) != null) {
							fileContent += "\r\n" + allLine;
						}
						bufferedReader.close();
						canAdd = false;
						BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, false));
						bufferedWriter.write(fileContent);
						bufferedWriter.flush();
						bufferedWriter.close();

						return true;
					}

				}
				fileContent += allLine + "\r\n";
			}
			if (canAdd) {
				String str = variable + "=" + value;
				fileContent += str + "\r\n";
				BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, false));
				bufferedWriter.write(fileContent);
				bufferedWriter.flush();
				bufferedWriter.close();
			}
		} catch (IOException ex) {
			throw ex;
		} finally {
			bufferedReader.close();
		}
		return false;
	}

	public static void main(String[] args) {
		try {
			/*;文件事例
			[Client]
			;客户端版本号
			version=0001
			;设备号
			devNum=6405*/
			String value = IniFileUtil.readCfgValue("L:/a.ini", "Client", "devNum", "1");
			System.out.println(value);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}

ini 配置文件

;系统设置
[SysSet1]
;系统名称
sysName=FH Admin
;带分页的列表页面,每页条数
showCount=10
;在线管理IP
onlineIp=127.0.0.1
;在线管理端口
onlinePort=8869
;信息提示音
fhsmsSound=m1

;邮箱服务器SMTP
SMTP=smtp.126.com
;邮箱服务器端口
PORT=25
;邮箱服务器邮箱
EMAIL=wwww@126.com
;邮箱服务器密码
PAW=234561

;即时聊天IP
imIp=127.0.0.1
;即时聊天端口
imPort=8879


推荐阅读:
  1. java 操作 ini 配置文件
  2. springboot shiro 权限管理 后台框架源码 java 项目

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ini ava ini配置文件

上一篇:冒泡排序及其优化

下一篇:PHP 简单日历编写

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》