using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WCS.BLL.Config { /// /// 本地文件 /// public static class LocalFile { public static readonly string AppDir = AppDomain.CurrentDomain.BaseDirectory; /// /// 程序运行名称(BaseUi.exe) /// public static readonly string AppName = AppDomain.CurrentDomain.FriendlyName; /// /// 数据目录 /// public static readonly string DataDir = Path.Combine(AppDir, "data"); /// /// 日志目录 /// public static readonly string LogDir = Path.Combine(AppDir, "logs"); /// /// 配置文件路径 /// public static readonly string ConfigPath = Path.Combine(DataDir, "jsconfig.json"); /// /// 货架模组编码正则表达式 /// public static readonly string DefaultModuleCodePattern = "^[ABCD][0-9]{1,2}-R[0-9]{1,2}C[0-9]{1,2}$"; static object lockConfig = new object(); static JsConfig config; /// /// 配置信息 /// public static JsConfig Config { get { if (config != null) return config; else { try { if (File.Exists(ConfigPath)) lock (lockConfig) config = JsonConvert.DeserializeObject(File.ReadAllText(ConfigPath, Encoding.UTF8)); else config = null; } catch (Exception) { config = null; } } return config ?? new JsConfig(); } } /// /// 刷新配置信息。将本地的配置信息重新加载到内存中 /// public static void UpdateConfig() { if (File.Exists(ConfigPath)) lock (lockConfig) config = JsonConvert.DeserializeObject(File.ReadAllText(ConfigPath, Encoding.UTF8)); else config = null; } /// /// 保存配置信息。将内存中的配置信息保存到本地 /// public static void SaveConfig() { try { lock (lockConfig) File.WriteAllText(ConfigPath, JsonConvert.SerializeObject(Config, Formatting.Indented), Encoding.UTF8); } catch (Exception ex) { UpdateConfig(); throw ex; } } } }