mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-03 15:10:14 +08:00
在 MultiFilePluginDataStorage.load 失败时,备份数据文件 (#2089)
* feat: load data failure, backup data file * feat: load data failure, backup data file * feat: currentTimeMillis
This commit is contained in:
parent
342538e31b
commit
2d41a617fe
@ -18,6 +18,7 @@ import net.mamoe.mirai.console.data.PluginDataStorage
|
||||
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
||||
import net.mamoe.mirai.message.MessageSerializers
|
||||
import net.mamoe.mirai.utils.MiraiLogger
|
||||
import net.mamoe.mirai.utils.currentTimeMillis
|
||||
import net.mamoe.yamlkt.Yaml
|
||||
import java.io.File
|
||||
import java.nio.file.Path
|
||||
@ -35,9 +36,17 @@ internal open class MultiFilePluginDataStorageImpl(
|
||||
instance.onInit(holder, this)
|
||||
|
||||
// 0xFEFF is BOM, handle UTF8-BOM
|
||||
val text = getPluginDataFile(holder, instance).readText().removePrefix("\uFEFF")
|
||||
val file = getPluginDataFile(holder, instance)
|
||||
val text = file.readText().removePrefix("\uFEFF")
|
||||
if (text.isNotBlank()) {
|
||||
createYaml(instance).decodeFromString(instance.updaterSerializer, text)
|
||||
val yaml = createYaml(instance)
|
||||
try {
|
||||
yaml.decodeFromString(instance.updaterSerializer, text)
|
||||
} catch (cause: Throwable) {
|
||||
// backup data file
|
||||
file.copyTo(file.resolveSibling("${file.name}.${currentTimeMillis()}.bak"))
|
||||
throw cause
|
||||
}
|
||||
} else {
|
||||
this.store(holder, instance) // save an initial copy
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user