using Newtonsoft.Json; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; using System.Linq; namespace IoTServer.Common { public class DataPersist { string prefix; static ConcurrentDictionary data = new ConcurrentDictionary(); /// /// /// /// 前缀 public DataPersist(string prefix) { this.prefix = $"iot_{prefix}_"; } /// /// 读 /// /// /// public string Read(string key) { key = prefix + key; if (data.ContainsKey(key)) { return data[key]; } return string.Empty; } public string Read(int key) { return Read(key.ToString()); } /// /// 写 /// /// /// public void Write(string key, string value) { key = prefix + key; if (data.ContainsKey(key)) { data[key] = value; } else { data.TryAdd(key, value); } } public void Write(int key, string value) { Write(key.ToString(), value); } /// /// 清空 /// public static void Clear() { data = new ConcurrentDictionary(); } /// /// 保存数据 /// public static void SaveData() { var path = @"C:\IoTClient"; var filePath = path + @"\IoTClient.Data"; var dataString = JsonConvert.SerializeObject(data); using (FileStream fileStream = new FileStream(filePath, FileMode.Create)) { using (StreamWriter sw = new StreamWriter(fileStream)) { sw.Write(dataString); } } } /// /// 初始化加载数据 /// public static void LoadData() { var dataString = string.Empty; var path = @"C:\IoTClient"; var filePath = path + @"\IoTClient.Data"; if (File.Exists(filePath)) dataString = File.ReadAllText(filePath); else { if (!Directory.Exists(path)) Directory.CreateDirectory(path); File.SetAttributes(path, FileAttributes.Hidden); } if (!string.IsNullOrWhiteSpace(dataString)) data = JsonConvert.DeserializeObject>(dataString); } } }