欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)解析ini文件對應(yīng)到JavaBean中

 更新時間:2022年01月12日 08:42:34   作者:怪咖軟妹@  
ini 文件是Initialization File的縮寫,即初始化文件,是windows的系統(tǒng)配置文件所采用的存儲格式。這篇文章主要介紹了通過Java實現(xiàn)解析ini文件對應(yīng)到JavaBean中,需要的可以參考一下

1、ini文件簡介

.ini 文件是Initialization File的縮寫,即初始化文件,是windows的系統(tǒng)配置文件所采用的存儲格式,統(tǒng)管windows的各項配置,ini文件也可以用來存放軟件信息,在java開發(fā)當中有時候涉及到對接別的設(shè)備或者對接程序可能偶爾會遇到ini文件。

2、ini文件

這個是我的一個ini文件?,F(xiàn)在想要解析這個文件,對應(yīng)到j(luò)avabean當中,從下面可以看出,這個ini有兩個節(jié)點,也可以認為是兩個java對象,一個是PATIENT,一個是REPORT。

這個是已經(jīng)寫好的一個工具類,可以直接復制粘貼使用的,沒有依賴任何第三方j(luò)ar包,在工具類最下面有一個main方法,就是用法示例。

3、ini解析工具類

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class ParseIniUtil {
    protected Map<String,Object> sections = new HashMap<String,Object>();
    private transient String defaultName = "default";
    private transient String sectionName;
    private transient Properties property;
    private Properties parentObj;

    /**
     * 構(gòu)造函數(shù)
     *
     * @param filename
     *            文件路徑
     * @throws IOException
     */
    public ParseIniUtil(String filename) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        read(reader);
        reader.close();
    }

    /**
     * 文件讀取
     *
     * @param reader
     * @throws IOException
     */
    protected void read(BufferedReader reader) throws IOException {
        String line;
        sectionName = this.defaultName;
        property = new Properties();
        sections.put(sectionName, property);

        while ((line = reader.readLine()) != null) {
            parseLine(line);
        }
    }

    /**
     * 解析每行數(shù)據(jù)
     *
     * @param line
     */
    protected void parseLine(String line) {
        line = line.trim();
        if (line.indexOf('#') == 0 || line.indexOf(';') == 0) {
            return;
        }

        if (line.matches("\\[.*\\]")) {
            sectionName = line.replaceFirst("\\[(.*)\\]", "$1").trim();
            property = new Properties();
            if (sectionName.matches(".*:.*")) {
                int pos = sectionName.indexOf(':');
                String child = sectionName.substring(0, pos);
                String parent = sectionName.substring(pos + 1);

                parentObj = this.getSection(parent);
                if (parentObj != null) {
                    property = (Properties) parentObj.clone();
                    sections.put(child, property);
                }
            } else {
                sections.put(sectionName, property);
            }
        } else if (line.matches(".*=.*")) {
            int i = line.indexOf('=');
            String name = line.substring(0, i).trim();
            String value = line.substring(i + 1).trim();

            if (value.indexOf('"') == 0 || value.indexOf('\'') == 0) {
                // 去掉前面符號 " 或 '
                value = value.substring(1, value.length());
                // 去掉后面 " 或 '
                int len = value.length();
                if (value.indexOf('"') == len - 1 || value.indexOf('\'') == len - 1) {
                    value = value.substring(0, len - 1);
                }
            }

            property.setProperty(name, value);
        }
    }

    /**
     * 根據(jù)節(jié) 和 key 獲取值
     *
     * @param section
     * @param key
     * @return String
     */
    public String get(String section, String key) {
        if (section.equals(null) || section == "")
            section = this.defaultName;

        Properties property = (Properties) sections.get(section);
        if (property == null) {
            return null;
        }

        String value = property.getProperty(key);
        if (value == null)
            return null;

        return value;
    }

    /**
     * 獲取節(jié)下所有key
     *
     * @param section
     * @return Properties
     */
    public Properties getSection(String section) {
        if (section.equals(null) || section == "")
            section = this.defaultName;

        Properties property = (Properties) sections.get(section);
        if (property == null) {
            sections.put(section, property);
        }

        return property;
    }

    /**
     * 增加節(jié)點 及 值
     *
     * @param section
     */
    public void set(String section, String key, String value) {
        if (property == null)
            property = new Properties();

        if (section.equals(null) || section == "")
            section = this.defaultName;

        if (key.equals(null) || key == "") {
            System.out.println("key is null");
            return;
        }

        sections.put(section, property);
        property.setProperty(key, value);
    }

    /**
     * 增加節(jié)點
     *
     * @param section
     */
    public void setSection(String section) {
        sections.put(section, property);
    }

    public static void main(String[] args) {
        String fileName = "C:\\Users\\gxs\\Desktop\\Patient.ini";
        ParseIniUtil config = null;
        try {
            config = new ParseIniUtil(fileName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String app = config.get("PATIENT", "OrderID");
        System.out.println("OrderID = " + app);

        String app1 = config.get("REPORT", "PostCode");
        System.out.println("PostCode = " + app1);
    }
}

4、示例運行結(jié)果

有了這個應(yīng)該想要解析ini對應(yīng)到j(luò)avabean當中不是什么問題了吧。

以上就是Java實現(xiàn)解析ini文件對應(yīng)到JavaBean中的詳細內(nèi)容,更多關(guān)于Java解析ini文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • spring?data?jpa如何使用自定義repository實現(xiàn)類

    spring?data?jpa如何使用自定義repository實現(xiàn)類

    這篇文章主要介紹了spring?data?jpa如何使用自定義repository實現(xiàn)類,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java8中Stream的使用示例教程

    java8中Stream的使用示例教程

    Stream是Java8的一大亮點,是對容器對象功能的增強,下面這篇文章主要給大家介紹了關(guān)于java8中Stream使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-10-10
  • 詳細總結(jié)Java組合模式

    詳細總結(jié)Java組合模式

    今天帶大家了解Java設(shè)計模式中的組合模式,下文中對組合模式介紹的非常詳細,還有相關(guān)代碼,對正在學習Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Spring-cloud Feign 的深入理解

    Spring-cloud Feign 的深入理解

    這篇文章主要介紹了Spring-cloud Feign 的深入理解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • java仿百度假分頁代碼實現(xiàn)的詳解

    java仿百度假分頁代碼實現(xiàn)的詳解

    這篇文章主要介紹了java仿百度假分頁代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Java BufferedWriter BufferedReader 源碼分析

    Java BufferedWriter BufferedReader 源碼分析

    本文是關(guān)于Java BufferedWriter ,BufferedReader 簡介、分析源碼 對Java IO 流深入了解,希望看到的同學對你有所幫助
    2016-07-07
  • 詳解mybatis多對一關(guān)聯(lián)查詢的方式

    詳解mybatis多對一關(guān)聯(lián)查詢的方式

    這篇文章主要給大家介紹了關(guān)于mybatis多對一關(guān)聯(lián)查詢的相關(guān)資料,文中將關(guān)聯(lián)方式以及配置方式介紹的很詳細,需要的朋友可以參考下
    2021-06-06
  • spring boot中controller的使用及url參數(shù)的獲取方法

    spring boot中controller的使用及url參數(shù)的獲取方法

    這篇文章主要介紹了spring boot中controller的使用及url參數(shù)的獲取方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 深入了解Java定時器中的Timer的原理

    深入了解Java定時器中的Timer的原理

    這篇文章主要介紹了Java定時器中的Timer的原理。Timer主要用于Java線程里指定時間或周期運行任務(wù),它是線程安全的,但不提供實時性(real-time)保證。接下來就跟隨小編一起深入了解Timer吧
    2022-01-01
  • java中參數(shù)傳遞方式詳解

    java中參數(shù)傳遞方式詳解

    這篇文章主要介紹了java中參數(shù)傳遞方式詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論