java配置文件ini的读取(自己看的)

shenqi.ini 文件内容 虚构例子:

[TestItem]

   Status="五行/自然现象"
   List1Name1="木"
   List1Name2="水"
   List1Name3="火"
   List1Name4="土"
   List1Name5="风"
   List1Name6="雨"
   List1Name7="雷"
   List1Name8="电"

  List2Name1  ="蟠桃"
  List2Name2  ="人参果"
  List2Name3  ="黄梨"
  List2Name4  ="葫芦藤"
  List2Name5  ="苦竹"
  List2Name6  ="菩提"
  List2Name7  ="莲花"
  List2Name8  ="绿柳"
  List2Name9  ="仙杏"
  List2Name10  ="扶桑树"

[高强力--先天型]
   Standard="fabao_探险可得"   
   liliang  ="强度(%),韧性(%),法力含量(%),总战斗力(%)"
   fabao="战斗力(%),伤害值,耐久度值,法力含量(%),总伤害量(%)"
   Allowed="可塑性,成长率,成功率比,重塑时间,提升强度比,变异率比" 
   TimeDiff=3
   QDRatio=15

java片段:

String s = "高强力--先天型";
String p = "Allowed";
String fName = "shenqi.ini"
String fUrl = getINIUrl() + fName;   //获取文件路径
//设置编码文件读取编码,因为要读取中文,所以使用字符流读取,字节流会乱码,
//编码格式设置成常用的utf-8,之前设置的GB2312和gbk都是乱码。
InputStreamReader oStreamWriter = new InputStreamReader(new FileInputStream(new File(fUrl)), "UTF-8");
Wini ini = new Wini();
ini.load(oStreamWriter);  //加载读取全部内容
List<Profile.Section> sList = ini.getAll(s); //根据key获取值。获取 【高强力--先天型】下所有键值对。
for (Profile.Section item : sList) { 
    Set<Map.Entry<String, String>> maps = item.entrySet(); //转换为set 集合
    for (Map.Entry<String, String> o : maps) {
        String name = o.getKey();
        if (name.equals(p)) {                               // 查找 Allowed 
            String value = o.getValue();                    // 获取 Allowed 值
            if (value.indexOf("\"") > -1) {                 // 是否包含 "
                value = value.replaceAll("\"", "");         //替换掉 "
            }
            return value;                                   // 返回找到的值
        }
    }
}

读取完成。结束!

以下是一个Java配置文件分段读取的工具类,可以将配置文件按照section分段读取,每个section中的键值对以Map的形式存储: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class ConfigParser { private String filename; private Map<String, Map<String, String>> sections; public ConfigParser(String filename) throws IOException { this.filename = filename; this.sections = new HashMap<>(); parse(); } public String get(String section, String option) { Map<String, String> options = sections.get(section); if (options != null) { return options.get(option); } return null; } public void set(String section, String option, String value) { Map<String, String> options = sections.computeIfAbsent(section, k -> new HashMap<>()); options.put(option, value); } private void parse() throws IOException { try (BufferedReader br = new BufferedReader(new FileReader(filename))) { String line; String section = null; Map<String, String> options = new HashMap<>(); while ((line = br.readLine()) != null) { line = line.trim(); if (line.matches("\\[.*\\]")) { if (section != null) { sections.put(section, options); } section = line.substring(1, line.length() - 1); options = new HashMap<>(); } else if (line.matches(".*=.*")) { String[] parts = line.split("=", 2); String option = parts[0].trim(); String value = parts[1].trim(); options.put(option, value); } } if (section != null) { sections.put(section, options); } } } } ``` 使用示例: ```java public static void main(String[] args) throws IOException { ConfigParser config = new ConfigParser("config.ini"); String value = config.get("section1", "option1"); System.out.println(value); config.set("section2", "option2", "value2"); // ... } ``` 其中,`config.ini`配置文件的格式如下: ``` [section1] option1 = value1 option2 = value2 [section2] option3 = value3 option4 = value4 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值