如果我们的程序没有任何配置文件时,这样的程序对外是全封闭的,一旦程序需要修改一些参数必须要修改程序代码本身并重新编译,这样很不好,所以要用配置文件,让程序出厂后还能根据需要进行必要的配置;配置文件主要就是用来存储 键 - 值 对的,就是类似一个map作用。所以自己设计一种简单的配置文件格式,也未尝不可,只是因为已经有大量的成熟配置文件格式可用,就用已有的吧。

配置文件有很多,如INI配置文件,XML配置文件,YAML,JSON,还有就是可以使用系统注册表等。关于这些配置文件各有优缺点,主要就是两方面:

表达能力

就是这种配置文件能够表达的数据格式的丰富性,比如一个复杂的数据结构,能否表达出来。

xml > yaml > toml > json > plist > ini

人类可读性

就是这种配置文件,直接用记事本等纯文本编辑器打开时,能否容易看懂其表达的内容。

ini > toml > yaml > json > xml > plist

总结

一般简单场合,其实ini配置文件就够用了(比较经典,用的人多,windows系统最常见),支持最基本的 键 - 值 对的使用,而且可读性太好了。还支持注释。解析速度也快。有开源库可用(因为文件格式真的很简单,自己写几个简单的解析函数也很快)。当然文件后缀名也不一定是ini啦,是其它的也行,因为解析函数能解析其内容就行了。

simpleini/README.md at master · brofield/simpleini · GitHub

c++中解析ini 文件的simpleIni库_香飘飘cj的博客-CSDN博客_c++ ini文件解析

当然,对数据结构复杂一些的,用json也够了(用的人多,比如vscode的配置文件就是这个),各种编程语言都有成熟的开源库。这个算是表达能力和可读性的一种权衡的配置文件吧,但是,它不支持注释。特别注意,ini文件的注释必须单独在一行开头(不能和数据处于同一行),以分号开头, ;xxxxx。如果和数据处于同一行,就会报错:已不再支持文件xx的版本了。

如果要求更高,就选表达能力更强的配置文件吧,但是可读性会差,解析速度也会差了。

所以,我一般用ini和json的比较多。

参考文章:

YAML,JSON,ini,XML 用来做配置文件,优缺点分别是什么? - 知乎

.ini文件——配置文件_fpn233的博客-CSDN博客_ini配置文件

关于软件常用的各种配置文件YAML、JSON、ini、XML比较相关推荐

  1. Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件...

    实际项目中,读取相关的系统配置文件是很常见的事情.今天就来说一说,Golang 是如何读取YAML,JSON,INI等配置文件的. 1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换 ...

  2. yaml,json,ini这三种格式用来做配置文件优缺点

    适合人类编写:ini > toml > yaml > json > xml > plist 可以存储的数据复杂度:xml > yaml > toml ~ js ...

  3. Go-如何读取yaml,json,ini等配置文件

    1. json使用 JSON 应该比较熟悉,它是一种轻量级的数据交换格式.层次结构简洁清晰 ,易于阅读和编写,同时也易于机器解析和生成. 创建 conf.json: {"enabled&qu ...

  4. 数据交换协议--JSON、XML、YAML、TOML、TLV

    数据交换协议--JSON.XML.YAML.TOML.TLV 1 数据交换协议 2 常用协议 2.1 JSON 介绍 示例 2.2 XML 介绍 示例 2.3 CSON 介绍 示例 2.4 TOML ...

  5. SpringBoot配置文件YAML

    一.简介 SpringBoot使用一个全局的配置文件,配置文件名是固定的,主要有两种格式:properties和yml application.properties application.yml 配 ...

  6. viper4android io错误,golang常用库之配置文件解析库-viper使用详解

    一.viper简介 viper 配置管理解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 c ...

  7. SpringBoot配置文件YAML配置注入(详解)

    目录 一.SpringBoot配置文件 1. SpringBoot默认配置文件 2. 配置文件的作用 3. 配置文件的位置 4. 多环境切换 方式一:多配置文件 方式二:一个配置文件(yaml的多文档 ...

  8. [转]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    文章目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安 ...

  9. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全

    文章目录 前言 一.nginx简介 1. 什么是 nginx 和可以做什么事情 2.Nginx 作为 web 服务器 3. 正向代理 4. 反向代理 5. 负载均衡 6.动静分离 二.Nginx 的安 ...

最新文章

  1. 关于SQLServer2005的学习笔记——XML的处理
  2. 对抗训练浅谈:意义、方法和思考(附Keras实现)
  3. 安装完成ubuntu系统后的基本的相关配置---Linux总结笔记
  4. [转载]AXIS学习笔记
  5. 飞鸽传书 v2.51 Build 320 多国语言版
  6. Pytorch-torchvision源码解读:ASPP
  7. 城市定位html,城市定位页.html
  8. 基于JXTA开发的组内聊天和共享文件P2P软件
  9. latex 模板使用
  10. 火狐扩展教程_4个值得一试的Firefox扩展
  11. C语言 - 常见面试题整理
  12. java分布式文件存储服务实战
  13. java办公督办系统(企业事务管理系统)
  14. SysML-Sec A model Driven Approach for Designing Safe and Secure Systems
  15. 拉伯证券|社会消费复苏将是2023年主旋律
  16. python饼图添加颜色_PythonPlotly:通过字典自定义饼图颜色
  17. PC微信界面透明度修改美化自制小工具+壁纸1.1
  18. 二分法中 mid=beg+(end-beg)/2 与 mid=(beg+end)/2 的区别?
  19. photoshop ps 瘦身方法 液化工具
  20. wifi服务器维护需要多长时间,WIFI服务器设置及维护.ppt

热门文章

  1. c语言算术程序,(C语言)简单算术程序.ppt
  2. [1032]spark-3.0安装和入门
  3. Spring AOP原理及使用,面试必备
  4. js生成随机数和把日期格式转换成yyyyMMddHHmmss的方法
  5. 绘制pdf表格 (二) 通过itext实现在pdf中绘制excel表格样式设置中文字体、水印、logo、页眉、页码
  6. C# 写入和读取TXT文件
  7. DNS(域名解析协议)详解
  8. P4554 小明的游戏(双端bfs)
  9. vhdl中变量(variable)和信号(signal)的区别
  10. 操作系统学习笔记——北京大学陈向群老师课后及习题答案(1)