using Azylee.Core.IOUtils.FileUtils; using Azylee.Core.IOUtils.TxtUtils; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace Azylee.Jsons.JsonConfigUtils { /// /// Json 配置管理器 /// /// public class JsonConfig where T : IJsonConfigModel, new() { private T Config { get; set; } private string FilePath { get; set; } private string FilePathBackup { get; set; } private JsonConfig() { } /// /// 构造配置管理器 /// /// 配置文件路径 public JsonConfig(string filepath) { this.FilePath = filepath; this.FilePathBackup = filepath + ".backup"; // 读取默认配置文件 if (File.Exists(this.FilePath)) { this.Config = Json.File2Object(this.FilePath); } // 读取备份的配置文件 if (this.Config == null) { if (File.Exists(this.FilePathBackup)) { this.Config = Json.File2Object(this.FilePathBackup); } } if (this.Config == null) { this.Config = new T(); } // 重置配置项 this.Config.Reset(); Save(); } /// /// 获取配置信息 /// /// public T Get() { return this.Config; } /// /// 保存配置信息 /// /// public bool Save() { string s = Json.Object2String(this.Config); s = JsonFormat.Format(s); bool result = TxtTool.Create(this.FilePath, s); if (TxtTool.Create(this.FilePathBackup, s)) { if (FileTool.Copy(this.FilePathBackup, this.FilePath, true)) { FileTool.Delete(this.FilePathBackup); } } return result; } } }