Class ConfigStore
java.lang.Object
io.github.theword.queqiao.core.config.io.ConfigStore
配置文件写入器
本类不在正常启动路径上被调用——正常启动只读不写 config.yml。
它提供给真正需要覆盖用户文件的场景:
未来的 ConfigMigration、显式的"同步配置"命令。
保证:
- 原子写:临时文件 → 完整写入 → fsync →
ATOMIC_MOVE。 文件系统不支持时降级为REPLACE_EXISTING并记录日志; - 可恢复备份:轮换保留最多 5 份, 避免单份备份被下一次写入覆盖。
- Since:
- 0.6.11
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic voidbackupAndWriteAtomically(Path target, String content, org.slf4j.Logger logger) 备份后原子写入static PathresolveConfigPath(boolean isModServer) 解析配置文件路径static voidrotateBackup(Path target, org.slf4j.Logger logger) 轮换备份static voidwriteAtomically(Path target, String content, org.slf4j.Logger logger) 原子写入文本
-
Field Details
-
MAX_BACKUPS
public static final int MAX_BACKUPS备份最多保留份数- See Also:
-
-
Method Details
-
resolveConfigPath
解析配置文件路径插件端为
plugins/QueQiao/config.yml,模组端为config/QueQiao/config.yml(相对工作目录)。统一使用BaseConstant.MODULE_NAME, 避免出现QueQiao与queqiao两套目录(Linux 下会真的分成两个)。- Parameters:
isModServer- 是否为模组服务端- Returns:
- 配置文件路径
-
backupAndWriteAtomically
public static void backupAndWriteAtomically(Path target, String content, org.slf4j.Logger logger) throws IOException 备份后原子写入- Parameters:
target- 目标文件content- 完整内容logger- 日志实现,可为 null- Throws:
IOException- 写入失败
-
writeAtomically
public static void writeAtomically(Path target, String content, org.slf4j.Logger logger) throws IOException 原子写入文本- Parameters:
target- 目标文件content- 完整内容logger- 日志实现,可为 null- Throws:
IOException- 写入失败
-
rotateBackup
轮换备份命名与轮换方向(最多 5 份):
config.yml.bak.4 ← 最旧,将被删除 config.yml.bak.3 config.yml.bak.2 config.yml.bak.1 config.yml.bak ← 最新,即本次写入前的内容
- Parameters:
target- 目标文件;不存在时直接返回logger- 日志实现,可为 null- Throws:
IOException- 轮换失败
-