首页 > 编程语言 >java ini配置工具类 -复制工具类即可使用

java ini配置工具类 -复制工具类即可使用

时间:2024-04-28 15:56:06浏览次数:23  
标签:java String strArray value ini file strLine 工具

package 这里写你工具类包存放的地址

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

/**
* 说明:ini文件读写操作工具类
* 作者:FH Admin
* from:fhadmin.cn
*/
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(URLDecoder.decode(file, "UTF-8"))); //解决中文路径乱码
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(URLDecoder.decode(file, "UTF-8"))); //解决中文路径乱码
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();
}
}

}



参考腾讯云大佬:java 读写 ini 配置文件-腾讯云开发者社区-腾讯云 (tencent.com)

标签:java,String,strArray,value,ini,file,strLine,工具
From: https://www.cnblogs.com/Lee597/p/18163876

相关文章

  • jvppeteer 工具
    依赖<dependency><groupId>io.github.fanyong920</groupId><artifactId>jvppeteer</artifactId><version>1.1.5</version></dependency>工具importcom.ruiyun.jvppeteer.core.Puppeteer;importcom.ruiyun.j......
  • Java学习之Jackson
    介绍两种Java主流的转化工具Jackson和FastJson,一般项目中建议只选其中一种。Jackson1.将JSON字符串转成Java对象:readvalue方法第一个参数是Json字符串,第二个参数是将要转化类的类型ObjectMapperobjectMapper=newObjectMapper();MatchMatch=objectMapper.readValue(jsonStr......
  • 第十五届蓝桥杯 网络安全赛道 ezjava
    1.前言前一秒还在robots.txt找flag,下一秒就java内存马了,还不出网,这很......
  • Java:实验四 Java图形界面与事件处理(头歌)
    importjavax.swing.*;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;/***CreatedbyIntelliJIDEA.**@Author:*@create:2023/03/2......
  • 揭秘JavaScript数据世界:一文通晓基本类型和引用类型的精髓!
    在编程的世界里,数据是构建一切的基础。就像建筑师需要了解不同材料的强度和特性一样,程序员也必须熟悉各种数据类型。今天,我们就来深入探讨JavaScript中的数据类型,看看它们如何塑造我们的代码世界。一、JavaScript数据类型简介数据类型是计算机语言的基础知识,数据类型广泛用于变......
  • windows系统,大文本文件打开工具
    在Windows系统中,打开大文本文件的工具有多种选择。以下是一些推荐的软件:LogView:这是一款能够快速打开大文件的工具,对于300MB以上的文件,它基本上能在一分钟内打开。虽然打开大文件时可能会占用较多的内存,但它的处理速度相对较快,使得它成为处理大文本文件的理想选择。EditPlus:Edi......
  • 厉害了!这个工具帮助你生成朋友圈转发截图
    大家好,我是Java陈序员。在日常的工作生活中,我们经常会遇到应付各类强制要求转发朋友圈的行为,或者是朋友圈集赞的行为。今天,给大家介绍一个工具,可以帮助你生成朋友圈转发截图。关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项......
  • 记一次5分钟大模型生成物流网关多域名配置工具
    工具解决的问题小哥工作台配置物流网关配置一个接口,需要三个服务域名(自营、3pl、港澳),三个环境(测试、UAT、正式),3*3相当于需要配置9次,其中除了别名,其他都配置基本相同。通过大模型生成一个工具录入一次接口,生成9个配置文件。 步骤一:定义接口配置标准格式   步骤二:生......
  • Java面试题:你知道Spring的IOC吗?那么,它为什么这么重要呢?
    Spring的IOC(控制反转)是一种设计模式,它允许开发者将对象的创建和管理交给Spring框架来完成。在Spring中,IOC允许开发者将对象依赖关系从代码中分离出来,从而使代码更加灵活、可重用和易于管理。IoC全称InverseofControl(反向控制或控制反转)。在类和类之间存在控制权,控制权指的是......
  • 效率工具RunFlow完全手册之局域网传输篇
    本篇将向您介绍如何使用RunFlow在局域网(又称内网)内传输文件,同步剪贴板,无论是家庭局域网还是办公室局域网,都能轻松搞定文件传输以及剪贴板同步,如果您还没有安装RunFlow,可点这里去下载。为什么不推荐使用微信、QQ、钉钉、飞书等传输文件,要使用局域网传输呢?1.私密,文件和剪贴板都是......