千家信息网

java读写ini配置文件的示例代码怎么编写

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇文章为大家展示了java读写ini配置文件的示例代码怎么编写,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面通过代码先看下java 读写 ini 配置文
千家信息网最后更新 2024年09月22日java读写ini配置文件的示例代码怎么编写

本篇文章为大家展示了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 抛出文件操作可能出现的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配置文件

在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        Map 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 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();    }}

上述内容就是java读写ini配置文件的示例代码怎么编写,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0