美文网首页
java中如何实现读取带有section头的ini文件

java中如何实现读取带有section头的ini文件

作者: 青风飞絮 | 来源:发表于2019-07-29 17:54 被阅读0次

1.现有一配置文件my.ini,内容如下:

[student]
username = zhangsan
age = 20
[teacher]
username = lisi
age = 20

2.读取文件的代码如下:

import org.testng.annotations.Test;

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

public class IniReader {

    protected HashMap sections = new HashMap();
    private transient String currentSecion;
    private transient Properties current;

    /**
     * 构造函数
     */
    public IniReader(String filename) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(filename));
        read(reader);
        reader.close();
    }

    /**
     * 读取文件
     */
    protected void read(BufferedReader reader) throws IOException {
        String line;
        while ((line = reader.readLine()) != null) {
            parseLine(line);
        }
    }

    /**
     * 解析配置文件行
     */
    @SuppressWarnings("unchecked")
    protected void parseLine(String line) {
        line = line.trim();
        if (line.matches("\\[.*]")) {
            //取出正则表达式匹配到的内容中的第一个条件组中的内容
            currentSecion = line.replaceFirst("\\[(.*)]", "$1");//[dev]
            //创建一个Properties对象
            current = new Properties();
            //将currentSecion和current以键值对的形式存放在map集合中。
            sections.put(currentSecion, current);
        } else if (line.matches(".*=.*")) {
            if (current != null) {

                int i = line.indexOf('=');
                String name = line.substring(0, i).trim();
                String value = line.substring(i + 1).trim();
                current.setProperty(name, value);
            }
        }
    }
    /**
     * 根据提供的键获取值
     */
    public String getValue(String section, String key) {
        Properties p = (Properties) sections.get(section);
        if (p == null) {
            return null;
        }
        String value = p.getProperty(key);
        return value;
    }

}

3.测试方法如下:

import org.testng.annotations.Test;

import java.io.IOException;

public class DemoTest {
    @Test
    public void test() throws IOException {
        IniReader iniReader = new IniReader("src/test/resources/ini/my.ini");
        String name = iniReader.getValue("student", "username");
        String age = iniReader.getValue("student", "age");
        System.out.println(name);
        System.out.println(age);
    }
}

4.执行的结果如下:

zhangsan
20

相关文章

  • java中如何实现读取带有section头的ini文件

    1.现有一配置文件my.ini,内容如下: 2.读取文件的代码如下: 3.测试方法如下: 4.执行的结果如下:

  • Python读取ini配置文件

    配置文件ini的格式 读取ini文件 获取配置文件中对应值的基础方法 实现一个ini配置文件读取工具类

  • Python读取ini配置文件

    配置文件ini的格式 读取ini文件 获取配置文件中对应值的基础方法 实现一个ini配置文件读取工具类

  • Android 读取ini文件配置项

    这个是带Section的文件读取,ini文件放在assets目录下 使用方法: ini配置: 代码: 注意:STR...

  • Bat中读取ini文件

    很多时候配置文件会用到ini文件,在bat中可以写一个readini函数来读取ini 例如ini文件 读取测试 测试结果

  • 配置文件读写:configparser

    Configuration file parser 1.读文件: read(filename):读取ini文件中的...

  • Python 进阶——什么是上下文管理器

    错误读取文件 java思维读取文件 使用with读取文件 上下文管理器语法 一个类在 Python 中,只要实现以...

  • config.ini

    使用configparser读写config.ini文件 读取config.ini文件 写入config.ini文...

  • python配置文件读取

    1、ConfigParser读取配置文件模块 配置文件 [people]为section 2、读取配置文件

  • java获取文件路径

    1. 前言 Java 开发中我们经常要获取文件的路径,比如读取配置文件等等。今天我们就关于文件的路径和如何读取文件...

网友评论

      本文标题:java中如何实现读取带有section头的ini文件

      本文链接:https://www.haomeiwen.com/subject/utcirctx.html