java?讀寫?ini?配置文件的示例代碼
下面通過代碼先看下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 拋出文件操作可能出現(xiàn)的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 拋出文件操作可能出現(xiàn)的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 ;設(shè)備號 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中配置:
<dependency> ? ? <groupId>org.ini4j</groupId> ? ? <artifactId>ini4j</artifactId> ? ? <version>0.5.4</version> </dependency>
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 ? ? ? ? Map<String, String> map = 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<String> 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(); ? ? } }
參考:
http://ini4j.sourceforge.net/tutorial/OneMinuteTutorial.java.html
http://ini4j.sourceforge.net/tutorial/IniTutorial.java.html
到此這篇關(guān)于java 讀寫 ini 配置文件的文章就介紹到這了,更多相關(guān)java 讀寫 ini文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
navicatdesignquery.sql.bak系統(tǒng)找不到指定路徑錯誤的解決方法
今天小編就為大家分享一篇關(guān)于navicatdesignquery.sql.bak系統(tǒng)找不到指定路徑錯誤的解決方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12Java實戰(zhàn)之小米交易商城系統(tǒng)的實現(xiàn)
這篇文章將利用Java實現(xiàn)小米交易商城系統(tǒng),文中采用的技術(shù)有:JSP?、Spring、SpringMVC、MyBatis等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-04-04Java實現(xiàn)二維碼QRCode的編碼和解碼與示例解析
本文主要介紹Java實現(xiàn)二維碼QRCode的編碼和解碼,這里給大家一個小示例以便理解,有需要的小伙伴可以參考下2016-08-08IDEA mybatis-generator逆向工程生成代碼
這篇文章主要介紹了IDEA mybatis-generator逆向工程生成代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06SpringBoot開發(fā)案例 分布式集群共享Session詳解
這篇文章主要介紹了SpringBoot開發(fā)案例 分布式集群共享Session詳解,在分布式系統(tǒng)中,為了提升系統(tǒng)性能,通常會對單體項目進行拆分,分解成多個基于功能的微服務(wù),可能還會對單個微服務(wù)進行水平擴展,保證服務(wù)高可用,需要的朋友可以參考下2019-07-07