Hutool 官网:https://www.hutool.cn
官方参考文档:https://www.hutool.cn/docs
本节内容对应官方文档位置:设置文件-Setting (hutool.cn)
Hutool 版本:5.7.1

特点

  1. setting兼容properties文件格式
  2. 支持各类编码方式(注释和value可用中文)
  3. 支持变量${key},减少配置文件冗余
  4. 支持分组[group],增加配置文件可读性

配置格式

官方配置文件格式example.setting

# -------------------------------------------------------------
# ----- Setting File with UTF8-----
# ----- 数据库配置文件 -----
# -------------------------------------------------------------#中括表示一个分组,其下面的所有属性归属于这个分组,在此分组名为demo,也可以没有分组
[demo]
#自定义数据源设置文件,这个文件会针对当前分组生效,用于给当前分组配置单独的数据库连接池参数,没有则使用全局的配置
ds.setting.path = config/other.setting
#数据库驱动名,如果不指定,则会根据url自动判定
driver = com.mysql.jdbc.Driver
#JDBC url,必须
url = jdbc:mysql://fedora.vmware:3306/extractor
#用户名,必须
user = root${demo.driver}
#密码,必须,如果密码为空,请填写 pass =
pass = 123456

规则:

  1. 只支持单行注释#这是一个注释,value后不能添加注释,如driver = com.mysql.jdbc.Driver #这个注释是value的一部分,获取driver的value为:com.mysql.jdbc.Driver #这个注释是value的一部分
  2. 键值表示方式:key = value,例如pass = 123456,key和value之间空格会被trim掉
  3. 分组表示方式:[group],例如:[demo]
  4. 变量表示方式:${变量名},例如:user = root${demo.driver}变量只能识别读入行的变量,例如第6行的变量在第三行无法读取,变量默认不开启,需要在初始化时指定

应用

  1. Setting初始化
    Setting setting = new Setting(path,class,code,isVariable)
    path: path/xxx.setting可以在任何位置,默认是相对路径,在项目的classes文件夹下,必填
    class:xxx.class,默认相对路径改为与xxx.class文件同包下,选填
    code:CharsetUtil.xxx,文件编码(Hutool字符集工具类),选填
    isVariable:true\false,是否开启变量,默认为false,选填
  2. Setting读取配置参数
    setting.getStr(key)获取默认无分组下key的value,出现相同key取最后一行的key
    setting.getByGroup(key, group)获取group下key的value,出现相同key取最后一行的key
    setting.getStr(key, 默认值)获取默认无分组下key的value,若不存在key时,返回默认值
    setting.getStr(key, group, 默认值)获取group下key的value,若不存在key时,返回默认值
    setting.getWithLog(key);获取默认无分组下key的value,若不存在key,则打印debug日志No key define for [key]
    setting.getByGroupWithLog(key, group);获取group下key的value,若不存在key,则打印debug日志No key define for [key]
    setting.getSetting(group)获取group下所有配置键值对,组成新的Setting
  3. 重新加载配置和保存配置
    setting.reload()重新读取配置文件
    setting.autoLoad(true)在配置文件变更时自动加载
    setting.getGroups()获得所有分组名
    setting.setVarRegex(正则表达式)设定变量名的正则表达式,Setting的变量替换是通过正则查找替换的,如果Setting中的变量名其他冲突,可以改变变量的定义方式
    setting.toBean(bean)将key-value映射为对象,原理是原理是调用对象对应的setXX方法
    setting.set(key, group,value) 添加\更改key对应的value,group可不填,不填则默认为无分组配置参数
    setting.store()保存设置到文件

例子:

在classes\config下新建一个test.setting文件

#默认无分组
name = abc
sex = woman
age = ${group1.sex}
name = 张三
abc = #这是注释
[group1]
name = zhang 3 #这是value一部分
sex = man
age = 18[group2]
title = welcome ${group1.name}
content = ${group1.sex}# 下面还是group2的内容
name = hello

测试代码

//不开启变量Setting setting = new Setting("config/test.setting");
//开启变量Setting setting2 = new Setting("config/test.setting",true);//返回:张三
setting.getStr("name")
//返回:${group1.age},因为读取不了后面的数据
setting2.getStr("age")//返回:welcome ${group1.name}
setting.getByGroup("title","group2")
//返回:welcome zhang 3 #这是value一部分
setting2.getByGroup("title","group2")//返回:
setting.getStr("abc","haha")
//返回:haha
setting.getStr("dd","haha")//返回:null ,打印 DEBUG cn.hutool.setting.AbsSetting - No key define for [dd]!
setting.getWithLog("dd")//返回:man
setting2.getSetting("group2").getStr("content")
//返回:null
setting2.getSetting("group2").getByGroup("name","group1")//返回:hello
setting.set("name", "hello")
setting.getStr("name")

Hutool学习 —— 设置文件-Setting相关推荐

  1. python设置文件权限_PYTHON学习之文件操作;

    PYTHON学习之文件操作: 文件内容替换 for line in flielinput.input("filepath",inplace=1): line = line.repa ...

  2. PHP学习笔记-文件操作1

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52294237 本文出自:[顾林海的博客] 前言 PHP支持文件上传功能 ...

  3. Linux学习笔记-文件权限与路径

    Linux学习笔记-文件与目录 目前从电子信息科学与技术转到了计算机专业,因此想趁着大四比较闲的时候补一些计算机的知识.我想说:你好,生活[斜眼笑]!愿生活温柔以待!哈哈,这是我写的第一篇博客,谨以此 ...

  4. Linux学习笔记 文件服务Vsftp详细介绍

    Linux学习笔记 文件服务Vsftp详细介绍 知识点: 1.FTP使用TCP连接和TCP端口 2.在进行通信时,FTP需要建立两个TCP连接: 一个用于控制信息,TCP端口号缺省为21 一个用于数据 ...

  5. 初步学习pg_control文件之六

    接前文:初步学习pg_control文件之五 ,DB_IN_ARCHIVE_RECOVERY何时出现? 看代码:如果recovery.conf文件存在,则返回 InArchiveRecovery = ...

  6. MVCWebForm对照学习:文件上传(以图片为例)

    MVC&WebForm对照学习:文件上传(以图片为例) 在web应用中,文件上传是个很普遍的功能,那么今天就来小结一下asp.net中文件上传的方式.首先我们快速来回忆一下WebForm中的文 ...

  7. 使用PosixFilePermission的Java设置文件权限

    Java File class has the ability to set the file permissions but it's not versatile. The biggest draw ...

  8. mongodb配置文件启动linux,Linux运维知识之Mongodb启动方法:设定参数启动;从设置文件启动...

    本文主要向大家介绍了Linux运维知识之Mongodb启动方法:设定参数启动;从设置文件启动,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 接手的MongoDB只有一个日志文件 ...

  9. Windows 设置文件默认打开方式

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 计算机是现在办公必用品,如何熟练使用自己的计算机从而提高自己的效率是每个人都应该去学习 ...

  10. Linux学习笔记——文件IO

    文章目录 前言 C语言操作文件的函数 系统接口 文件描述符 文件系统 动态库和静态库 前言   在系统角度理解文件:文件=内容+属性,内容和属性都是数据,对于文件的所有操作无外乎对于文件内容操作和对于 ...

最新文章

  1. 认识计算机硬件观评课,观课听课评课评语
  2. Redis分布式锁【正确实现方式】
  3. UI组件之TextView及其子类
  4. VC里的#define new DEBUG_NEW
  5. Oracle RAC
  6. deepin php docker,Deepin15.10安装Docker
  7. 全网音乐解析_Android干货 | 手机端的音乐神器
  8. icmp协议_计算机网络基础(七)网络层ICMP协议
  9. 关闭软件的同时,也关闭软件的进程
  10. 通过Process调用桌面程序
  11. python内置库和标准库的区别_python标准库和第三方库的区别
  12. 简易上手的开源校园小程序源码
  13. 360网站查杀php专版,360网站木马查杀插件上线:可检测Struts2漏洞
  14. 爬取斗鱼主播名字和热度
  15. 计算机软件选修课选什么好,互联网行业,软件工程专业学什么?
  16. 福州“小年”年味浓 祭灶已成传统节俗
  17. 工业机器人九龙坡区职教中心_重庆市九龙坡职业教育中心(职教中心)简介简介...
  18. 【软考-中级】系统集成项目管理工程师【总】
  19. PhantomJS将网页保存为图片
  20. 部件级、处理机级和处理机间流水线

热门文章

  1. 太牛了!某大佬程序猿北漂16年,从睡天桥到身价数千万,衣锦还乡重庆住豪宅!...
  2. 怎样用硬盘启动计算机,电脑新增了硬盘,在bios中怎么设置硬盘启动,来看看具体操作步骤...
  3. 韩信点兵问题(C语言)
  4. 花了一年时间开发的YBC管型三维预览控件
  5. 新年贺卡php,PS设计2016猴年大吉新年贺卡
  6. Jenkins Config File Provider 插件 创建kubeconfig文件
  7. 2021-06-13
  8. 图书馆管理系统(详细)(C语言版本)
  9. “真智能”黑马杀出,智能家居的下一战要攻破场景化?
  10. 无忧看片,Python黑科技神奇去除马赛克