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;
}
}
}