huang
试了下 copyDefaults 这个方法
getConfig().options().copyDefaults(true);
saveConfig();
如果填 false 或者不填,生成的文件只有注释没有内容……(不填默认值是 false)
不解,这样有什么意义么?

如果填 true,正常生成。

Javadoc - copyDefaults()
public boolean copyDefaults()
Checks if the Configuration should copy values from its default Configuration directly.
If this is true, all values in the default Configuration will be directly copied,
making it impossible to distinguish between values that were set and values that are provided by default. As a result, ConfigurationSection.contains(java.lang.String) will always return the same value as ConfigurationSection.isSet(java.lang.String). The default value is false.
Returns:
Whether or not defaults are directly copied
如果值是 true,就复制默认配置文件的内容。嗯,理解起来没问题。
最后一行就无法理解了……
根据自己不断改代码运行的结果看,调用copyDefaults
这个方法会复制默认的配置文件内容到内存,需要配合 saveConfig
使用。没有 saveConfig
的话,不会生成 config.yml 文件。
然后,回过头看自己的代码。
if 判断是否存在配置文件,不存在则生成;存在则输出config.yml found, loading...
。
因此不存在的情况下,无需顾虑会不会覆盖已有的配置文件,直接一行
saveDefaultConfig();
即可。
嗯……应该没错吧?
Javadoc - saveDefaultConfig
看了眼文档,发现其实不做判断,直接暴力调用 saveDefaultConfig
,现有的配置文件也不会被覆盖。
懒得做测试了……
This should fail silently if the config.yml already exists.

自问自答
- 取决于怎么写的代码
- 不知道……可能
saveDefaultConfig
就是无脑保存吧
- 不知道……
- 不知道……