跳到主要内容

3Configuration自定义配置

在配置文件config.yml中写一点信息:

这个文件不同于plugin.yml

yunfei:
list: #list
- 1
- 2
- abc
map: #MapList
- { name: senko, count: 1, speed: 3.3f }
- { name: senko2, count: 2, speed: 2.2f }
age: 11 #11
disabled: false #false

主类中读取配置文件信息:

    /**
* 使用{@link YamlConfiguration}对象的get函数来获取yaml属性。
*/
private void testGetConfigYaml() {
Logger logger = getLogger();
// 通过JavaPlugin#getConfig函数获取的配置文件只能是config.yml
FileConfiguration config = getConfig();
List<?> list = config.getList("yunfei.list");
logger.info("==========yunfei.list===========" + list.size());
for (Object o : list) {
logger.info("Result:" + o + "| 类型为:" + o.getClass().getName());
}

List<Map<?, ?>> mapList = config.getMapList("yunfei.map");
logger.info("==========yunfei.map===========" + mapList.size());
for (int i = 0; i < mapList.size(); i++) {
StringBuilder sb = new StringBuilder();
Set<?> keys = mapList.get(i).keySet();
Collection<?> values = mapList.get(i).values();
sb.append(",map的keys:");
keys.forEach((e) -> sb.append(e).append(" "));
sb.append(",map的values:");
values.forEach(e -> sb.append(e).append(" "));
logger.info("当前map:" + i + sb);
}
logger.info("==========yunfei.age===========" + config.getInt("yunfei.age"));
logger.info("==========yunfei.disabled===========" + config.getBoolean("yunfei.disabled"));
}

保存并持久化文件:

    private void testSaveAndSaveDefaultConfig() {
// config.yml
FileConfiguration config = getConfig();

// 更新JavaPlugin#newConfig对象的属性值
config.set("yunfei.disabled", true);

// 覆盖保存
saveConfig();
}

自定义配置文件custom-config.yml

    /**
* 自定义的配置文件,活学活用{@link #getDataFolder()}函数
*/
private void testCustomConfigYaml() {
YamlConfiguration myConfig = new YamlConfiguration();
myConfig.set("yunfei.age", 13);
myConfig.set("yunfei.status", "unknown");
try {
myConfig.save(new File(getDataFolder(), "custom-config.yml"));
YamlConfiguration newConfig = new YamlConfiguration();
newConfig.load(new File(getDataFolder(), "custom-config.yml"));
System.out.println(ChatColor.GREEN + " " + newConfig.get("yunfei.age"));
System.out.println(ChatColor.GREEN + " " + newConfig.get("yunfei.status"));
} catch (Exception e) {
e.printStackTrace();
}
}