• java 读写ini配置文件


    ini配置文件


    ;客户端配置
    [Client]
    ;客户端版本号
    version=0001
    ;设备号
    devNum=6405


    public final class ConfigurationFile {
        /**
         * 从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, remarkStr = "";
            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 += "
    " + allLine;
                            }
                            bufferedReader.close();
                            canAdd = false;
                            System.out.println(fileContent);
                            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, false));
                            bufferedWriter.write(fileContent);
                            bufferedWriter.flush();
                            bufferedWriter.close();
    
                            return true;
                        }
    
                    }
                    fileContent += allLine + "
    ";
                }
                if (canAdd) {
                    String str = variable + "=" + value;
                    fileContent += str + "
    ";
                    System.out.println(fileContent);
                    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;
        }

    ini配置文件中的注释使用【;】表示

  • 相关阅读:
    Document
    Document
    Document
    2.原型和原型链的关系以及查找顺序
    1.面向对象 及 相关知识点
    时间对象 <-> 定时器 <-> 电子时钟 <-> 倒计时效果
    定时器
    let var const 的区别
    ES6 中块的概念
    js中的闭包
  • 原文地址:https://www.cnblogs.com/geekworld/p/8144318.html
Copyright © 2020-2023  润新知