最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
java读写ini配置文件代码示例
时间:2022-06-29 01:58:27 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下java读写ini配置文件代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
代码如下所示:
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.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 += "rn" + allLine; } bufferedReader.close(); canAdd = false; BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, false)); bufferedWriter.write(fileContent); bufferedWriter.flush(); bufferedWriter.close(); return true; } } fileContent += allLine + "rn"; } if (canAdd) { String str = variable + "=" + value; fileContent += str + "rn"; 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配置文件
在maven项目中的pom.xml中配置:
org.ini4j ini4j 0.5.4
env.ini文件:
[dev] url="dev-url" user="dev-user" password="dev-password" [testing] url="" user="" password=""
代码:
import org.ini4j.Ini; import org.ini4j.Profile; import org.ini4j.Wini; import java.io.File; import java.util.Map; import java.util.Set; public class IniUtils { public static void main(String[] args) { try { readIni(); }catch (Exception e){ System.out.println(e.getMessage()); } } private static void readIni() throws Exception{ Wini ini = new Wini(new File("yourPath/env.ini")); // read Ini.Section section = ini.get("dev"); String url = section.get("url"); String user = section.get("user"); String password = section.get("password"); System.out.println(url); System.out.println(user); System.out.println(password); // or just use java.util.Map interface Mapmap = ini.get("dev"); String url1 = map.get("url"); String user1 = map.get("user"); String password1 = map.get("password"); System.out.println(url1); System.out.println(user1); System.out.println(password1); // get all section names // Set sectionNames = ini.keySet(); // for(String sectionName: sectionNames) { // Profile.Section section1 = ini.get(sectionName); // } // write ini.put("sleepy", "age", 55); ini.put("sleepy", "weight", 45.6); ini.store(); } }
相关文章
- 《原神》5.2卡池抽取建议 11-14
- 《原神》5.2版本新怪物介绍 11-14
- 《原神》希诺宁增伤触发方法 11-14
- 《原神》循音觅奇活动入口 11-14
- 《原神》循音觅奇兑换码获取方法 11-14
- 《原神》花羽会活动飞行技巧介绍 11-14