首页 > 其他分享 >20231106学习总结ini文件读写

20231106学习总结ini文件读写

时间:2023-11-06 22:23:27浏览次数:40  
标签:String 读写 value ini key reader new line 20231106

INI(Initialization)文件是一种常见的配置文件格式,通常用于存储应用程序的配置信息。INI文件通常包含一系列的节(sections)和键-值对(key-value pairs)。每个节包含一组相关的键-值对。

; 这是注释
[Database]
Server = localhost
Port = 3306
Username = myuser
Password = mypassword

 

以下是java对INI文件的读写操作

package file.ini;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class INIFIleReader {
    private Map<String, Map<String,String>> sections = new HashMap<>();

    public void readINIFile(String path){
        BufferedReader reader = null;
        try{
            reader = new BufferedReader(new FileReader(path));
            String line;
            String currentSection = null;
            while((line = reader.readLine()) != null){
                line = line.trim();
                //忽略#;空开头的空行、注释
                if(line.isEmpty() || line.startsWith(";") || line.startsWith("#")){
                    continue;
                }
                if (line.startsWith("[")){
                    //解析节
                    int endIndex = line.indexOf("]");
                    if(endIndex > 0){
                        currentSection = line.substring(1,endIndex);
                        sections.put(currentSection,new HashMap<>());
                    }
                }else {
                    //解析属性
                    int separatorIndex = line.indexOf("=");
                    if(separatorIndex > 0 && currentSection !=null){
                        String key = line.substring(0,separatorIndex).trim();
                        String value = line.substring(separatorIndex + 1).trim();
                        sections.get(currentSection).put(key,value);
                    }
                }
            }
        }catch (IOException e){
            try {//读写失败则新建一个ini文件
                FileWriter fileWriter = new FileWriter("config.ini");
                PrintWriter printWriter = new PrintWriter("config.ini");
                printWriter.println("[Section1]");
                printWriter.println("key1=value1");
                printWriter.println("key2=value2");
                printWriter.close();
            }catch (IOException e1){
                e1.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            if (reader !=null){
                try{
                    reader.close();
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
        }
    }
    
    public String getProperty(String section,String key){
        Map<String, String> properties = sections.get(section);
        if (properties !=null) {
            return properties.get(key);
        }
        return null;
    }
    //遍历Map数组
    public void ForEach(){
        sections.forEach((key,value) -> System.out.println(key + "=" +value));
    }
    
    public static void main(String[] args){
        INIFIleReader reader = new INIFIleReader();
        reader.readINIFile("config.ini");
        String value = reader.getProperty("Section1","key1");
        System.out.println(value);
        reader.ForEach();
    }

}

 

标签:String,读写,value,ini,key,reader,new,line,20231106
From: https://www.cnblogs.com/xxaxf/p/17813908.html

相关文章

  • 每日总结20231106
    代码时间(包括上课)3h代码量(行):100行博客数量(篇):1篇相关事项:1、今天是周一,一周里面最困的一天,但是今天没有迟到呦,今天第一节课是软件设计模式,写的是适配器模式和桥接模式,这次还很简单,是自己写的。2、今天第二节课上的是人机交互技术,看了相关C#的相关知识点的视频。3、今天晚上打......
  • 20231106打卡
    上午的实训课程是机械拆装,这是我们软工专业的一门基础课程。在实训课上,我们学习了自行车的拆装技术。通过实际操作,我们了解了自行车的各个部件以及它们之间的组装方式。我们学习了如何正确使用工具,拆卸和安装自行车的零件,以及如何调整和维护自行车的性能。这门课程的实践性很强,不......
  • uniApp:使用vue3+Vite4+pinia+sass技术栈构建(02)-封装api请求
    前言在纯vue3开发的时候,使用axios进行api请求,但在uniapp中还需要安装axios的适配器uniapp-axios-adapter,否则小程序或者app请求不兼容。文档地址uniapp-axios-adapter-DCloud插件市场但在这里我们不使用axios,而是使用uniapp提供的请求方法uni.request进行封装。uni.request方......
  • [论文阅读] [WGAN-GP] Improved Training of Wasserstein GANs
    [1704.00028]ImprovedTrainingofWassersteinGANs(arxiv.org)GulrajaniI,AhmedF,ArjovskyM,etal.Improvedtrainingofwassersteingans[J].Advancesinneuralinformationprocessingsystems,2017,30.代码:igul222/improved_wgan_training:Codeforrepr......
  • /var/lib/docker/overlay2/41a765b3cfaa278a67414c5b89234adfdebac7182d4bcd1e7c8a2c6
    现象:Error:Errorresponsefromdaemon:errorcreatingoverlaymountto/var/lib/docker/overlay2/41a765b3cfaa278a67414c5b89234adfdebac7182d4bcd1e7c8a2c6ac250dfb7-init/merged:nosuchfileordirectory原因:由于Docker存储空间中的一些残留文件或损坏的文件系统引......
  • Pinia 在setup外部使用时出现的bug
    在setup外部使用时,在请求拦截时获取token时。会出现获取的token是上一次获取的token。出现这种情况是因为实例化了两个Pinia实例,解决办法是在实例化一个Pinia实例,在store目录下index文件中创建Pinia实例,importtype{App}from'vue';import*asPiniafrom'pinia';consts......
  • How to prevent salinization of land
    Howtopreventsalinizationofland一.Measures:1.Itcanbeanalyzedandoperatedbylevelingtheland,improvingcultivation,fertilization,sowing,planting,intersticulture,etc.,strengthenthemanagementofChineseagriculturalenterprises,andtry......
  • Arduino® UNO R4 Minima 手册
    概述经过增强和改进,ArduinoUNOR4Minima配备了由瑞萨电子提供的强大32位微控制器。为提高处理能力、扩展内存和全新级别的板载外围设备做好准备。与现有Shields等附件的兼容性保持不变,无需对标准外形尺寸或5V工作电压进行任何更改。ArduinoUNOR4(以下简称UNOR4Mi......
  • OpenCV 图像复制和图像区域读写
    图像复制共享数据,使用newMat(srcMat,...)和newMat=srcMat生成新的Mat都和原Mat共享数据,也就是说如果修改某一Mat,其他Mat也会随之改变复制全新的Mat,使用CopyTo()和Clone()方法将生成一个全新的Mat,新Mat和原Mat不共享数据.图像共享数据的测试privatevo......
  • mysql读写分离
    ####在企业生产环境中,mysql架构采用主从模式,业务系统连接数据库;1)业务系统连接mysql,master主库;2)mysql从库是跟master主库进行数据同步;3)如果master主机宕机,业务系统怎么操作?4)可以修改业务系统的数据库配置ip为mysqlslave从库;5)不管主从如何切换,业务系统读、写请求只会发给一台......