public class Setting extends AbsSetting implements Map<String,String>
1、支持变量,默认变量命名为 ${变量名},变量只能识别读入行的变量,例如第6行的变量在第三行无法读取
2、支持分组,分组为中括号括起来的内容,中括号以下的行都为此分组的内容,无分组相当于空字符分组,若某个key是name,加上分组后的键相当于group.name
3、注释以#开头,但是空行和不带“=”的行也会被跳过,但是建议加#
4、store方法不会保存注释内容,慎重使用
| Modifier and Type | Field and Description |
|---|---|
static Charset |
DEFAULT_CHARSET
默认字符集
|
static String |
EXT_NAME
默认配置文件扩展名
|
protected Resource |
resource
设定文件的资源
|
DEFAULT_DELIMITER, DEFAULT_GROUP| Constructor and Description |
|---|
Setting()
空构造
|
Setting(File configFile,
Charset charset,
boolean isUseVariable)
构造
|
Setting(Resource resource,
Charset charset,
boolean isUseVariable)
构造
|
Setting(Resource resource,
SettingLoader loader)
构造
|
Setting(String path)
构造
|
Setting(String path,
boolean isUseVariable)
构造
|
Setting(String path,
Charset charset,
boolean isUseVariable)
构造,使用相对于Class文件根目录的相对路径
|
| Modifier and Type | Method and Description |
|---|---|
Setting |
addSetting(Setting setting)
添加一个Stting到主配置中
|
void |
autoLoad()
在配置文件变更时自动加载
|
void |
autoLoad(Consumer<Setting> callback)
在配置文件变更时自动加载
|
void |
clear()
清空默认分组(空分组)中的所有键值对
|
Setting |
clear(String group)
清除指定分组下的所有键值对
|
boolean |
containsKey(Object key)
默认分组(空分组)中是否包含指定key对应的值
|
boolean |
containsKey(String group,
String key)
指定分组中是否包含指定key
|
boolean |
containsValue(Object value)
默认分组(空分组)中是否包含指定值
|
boolean |
containsValue(String group,
String value)
指定分组中是否包含指定值
|
Set<Map.Entry<String,String>> |
entrySet()
获取默认分组(空分组)中的所有键值对列表
|
Set<Map.Entry<String,String>> |
entrySet(String group)
指定分组下所有键值对
|
boolean |
equals(Object obj) |
String |
get(Object key)
获取默认分组(空分组)中指定key对应的值
|
String |
getAndRemove(String... keys)
获取并删除键值对,当指定键对应值非空时,返回并删除这个值,后边的键对应的值不再查找
|
GroupedMap |
getGroupedMap()
获取GroupedMap
|
List<String> |
getGroups()
获取所有分组
|
Map<String,String> |
getMap(String group)
获得指定分组的所有键值对,此方法获取的是原始键值对,获取的键值对可以被修改
|
Object |
getObjByGroup(CharSequence key,
CharSequence group,
Object defaultValue)
获取Object属性值,最原始的对象获取,没有任何转换或类型判断
|
Properties |
getProperties(String group)
获取group分组下所有配置键值对,组成新的
Properties |
Props |
getProps(String group)
获取group分组下所有配置键值对,组成新的
Props |
Setting |
getSetting(String group)
获取group分组下所有配置键值对,组成新的Setting
|
String |
getSettingPath()
获得设定文件的路径
|
URL |
getSettingUrl()
获得设定文件的URL
|
int |
hashCode() |
boolean |
isEmpty() |
boolean |
isEmpty(String group)
某个分组对应的键值对是否为空
|
Set<String> |
keySet()
获取默认分组(空分组)中的所有键列表
|
Set<String> |
keySet(String group)
指定分组所有键的Set
|
Setting |
load()
重新加载配置文件
|
static Setting |
of()
构建一个空的Setting,用于手动加入参数
|
String |
put(String key,
String value)
将指定键值对加入到默认分组(空分组)中
|
void |
putAll(Map<? extends String,? extends String> m)
将键值对Map加入默认分组(空分组)中
|
Setting |
putAll(String group,
Map<? extends String,? extends String> m)
加入多个键值对到某个分组下
|
String |
putByGroup(String key,
String group,
String value)
将键值对加入到对应分组中
|
String |
remove(Object key)
移除默认分组(空分组)中指定值
|
String |
remove(String group,
Object key)
从指定分组中删除指定值
|
Setting |
set(String key,
String value)
设置值
|
Setting |
setByGroup(String key,
String group,
String value)
将键值对加入到对应分组中
此方法用于与getXXX统一参数顺序 |
Setting |
setFields(SerSupplier<String>... fields)
通过lambda批量设置值
实际使用时,可以使用getXXX的方法引用来完成键值对的赋值: User user = GenericBuilder.of(User::new).with(User::setUsername, "hutool").build(); Setting.of().setFields(user::getNickname, user::getUsername); |
Setting |
setLogIfNull(boolean logIfNull)
设置当获取key对应值为
null时是否打印debug日志提示用户 |
Setting |
setVarRegex(String regex)
设置变量的正则
正则只能有一个group表示变量本身,剩余为字符 例如 \$\{(name)\}表示${name}变量名为name的一个变量表示 |
int |
size()
键值总数
|
void |
stopAutoLoad()
停止自动加载
|
void |
store()
持久化当前设置,会覆盖掉之前的设置
持久化不会保留之前的分组,注意如果配置文件在jar内部或者在exe中,此方法会报错。 |
void |
store(File file)
持久化当前设置,会覆盖掉之前的设置
持久化不会保留之前的分组 |
void |
store(String absolutePath)
持久化当前设置,会覆盖掉之前的设置
持久化不会保留之前的分组 |
Props |
toProps()
转换为
Props对象,原分组变为前缀 |
String |
toString() |
Collection<String> |
values()
获取默认分组(空分组)中的所有值列表
|
Collection<String> |
values(String group)
指定分组下所有值
|
get, getByGroupNotEmpty, getObj, getStrs, getStrs, getStrsByGroup, getStrsByGroup, toBean, toBean, toBean, toBeanclone, finalize, getClass, notify, notifyAll, wait, wait, waitcompute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAllget, get, get, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBool, getBool, getByte, getByte, getBytes, getBytes, getChar, getChar, getDate, getDate, getDouble, getDouble, getEnum, getEnum, getFloat, getFloat, getInt, getInt, getLocalDate, getLocalDate, getLocalDateTime, getLocalDateTime, getLocalTime, getLocalTime, getLong, getLong, getNumber, getNumber, getObj, getShort, getShort, getSqlTime, getSqlTime, getSqlTimestamp, getSqlTimestamp, getStr, getStrgetBigDecimalByGroup, getBigDecimalByGroup, getBigIntegerByGroup, getBigIntegerByGroup, getBoolByGroup, getBoolByGroup, getByGroup, getByGroup, getByteByGroup, getByteByGroup, getCharByGroup, getCharByGroup, getDoubleByGroup, getDoubleByGroup, getIntByGroup, getIntByGroup, getLongByGroup, getLongByGroup, getObjByGroup, getShortByGroup, getShortByGroup, getStrByGroup, getStrByGrouppublic static final Charset DEFAULT_CHARSET
public static final String EXT_NAME
protected Resource resource
public Setting()
public Setting(String path)
path - 相对路径或绝对路径public Setting(String path, boolean isUseVariable)
path - 相对路径或绝对路径isUseVariable - 是否使用变量public Setting(String path, Charset charset, boolean isUseVariable)
path - 相对路径或绝对路径charset - 字符集isUseVariable - 是否使用变量public Setting(File configFile, Charset charset, boolean isUseVariable)
configFile - 配置文件对象charset - 字符集isUseVariable - 是否使用变量public Setting(Resource resource, Charset charset, boolean isUseVariable)
resource - Setting的Resourcecharset - 字符集isUseVariable - 是否使用变量public Setting(Resource resource, SettingLoader loader)
resource - Setting的Resourceloader - 自定义配置文件加载器public static Setting of()
public Setting load()
public void autoLoad()
public void autoLoad(Consumer<Setting> callback)
callback - 加载完成回调public void stopAutoLoad()
public URL getSettingUrl()
public String getSettingPath()
public Object getObjByGroup(CharSequence key, CharSequence group, Object defaultValue)
GroupedTypeGettergetObjByGroup in interface GroupedTypeGetter<CharSequence,CharSequence>key - 属性名group - 分组defaultValue - 默认值public String getAndRemove(String... keys)
keys - 键列表,常用于别名public Map<String,String> getMap(String group)
group - 分组public Setting getSetting(String group)
group - 分组public Properties getProperties(String group)
Propertiesgroup - 分组public Props getProps(String group)
Propsgroup - 分组public void store()
public void store(String absolutePath)
absolutePath - 设置文件的绝对路径public void store(File file)
file - 设置文件public GroupedMap getGroupedMap()
public Setting setVarRegex(String regex)
regex - 正则public Setting setLogIfNull(boolean logIfNull)
null时是否打印debug日志提示用户logIfNull - 当获取key对应值为null时是否打印debug日志提示用户public boolean isEmpty(String group)
group - 分组public boolean containsKey(String group, String key)
group - 分组key - 键public boolean containsValue(String group, String value)
group - 分组value - 值public String putByGroup(String key, String group, String value)
key - 键group - 分组value - 值public String remove(String group, Object key)
group - 分组key - 键public Setting putAll(String group, Map<? extends String,? extends String> m)
group - 分组m - 键值对public Setting addSetting(Setting setting)
setting - Setting配置public Collection<String> values(String group)
group - 分组public Set<Map.Entry<String,String>> entrySet(String group)
group - 分组public Setting set(String key, String value)
key - 键value - 值public Setting setFields(SerSupplier<String>... fields)
User user = GenericBuilder.of(User::new).with(User::setUsername, "hutool").build();
Setting.of().setFields(user::getNickname, user::getUsername);
fields - lambda,不能为空public Setting setByGroup(String key, String group, String value)
key - 键group - 分组value - 值public boolean containsKey(Object key)
containsKey in interface Map<String,String>key - 键public boolean containsValue(Object value)
containsValue in interface Map<String,String>value - 值public Collection<String> values()
public int hashCode()
public boolean equals(Object obj)
Copyright © 2025. All rights reserved.