using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; namespace Estsh.Client.Common.Util { public class LocalCache { private static Dictionary _cache = new Dictionary(); /// /// 本地缓存的数据 /// public static Dictionary localData { get { return _cache; } } /// /// 读取缓存 /// /// public static void ReadCache() { Dictionary cacheData = new Dictionary(); string lineStr; using (FileStream fs = new FileStream("local.data", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { while ((lineStr = sr.ReadLine()) != null) { cacheData.Add(lineStr.Split("=")[0], lineStr.Split("=")[1]); } } _cache = cacheData; } } /// /// 将数据缓存到本地 /// /// /// public static void AddCache(string key,string value) { Dictionary cacheData = new Dictionary(); cacheData.Add(key, value); AddCache(cacheData); } /// /// 将数据缓存到本地文件 /// /// public static void AddCache(Dictionary data) { Dictionary cacheData = new Dictionary(); using (FileStream fs = new FileStream("local.data", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { string lineStr; using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { while ((lineStr = sr.ReadLine()) != null) { cacheData.Add(lineStr.Split("=")[0], lineStr.Split("=")[1]); } } } foreach (var item in data) { if (cacheData.ContainsKey(item.Key)) { cacheData[item.Key] = data[item.Key].ToString(); } else { cacheData.Add(item.Key, item.Value.ToString()); } } using (FileStream fs = new FileStream("local.data", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { fs.Seek(0, SeekOrigin.Begin); fs.SetLength(0); using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)) { foreach (var item in cacheData) { sw.WriteLine(item.Key + "=" + item.Value); } } } _cache = cacheData; } /// /// 将删除本地缓存的数据 /// /// public static void DeleteCache(Dictionary data) { Dictionary cacheData = new Dictionary(); using (FileStream fs = new FileStream("local.data", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { string lineStr; using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { while ((lineStr = sr.ReadLine()) != null) { cacheData.Add(lineStr.Split("=")[0], lineStr.Split("=")[1]); } } } foreach (var item in data) { if (cacheData.ContainsKey(item.Key)) { cacheData.Remove(item.Key); } } using (FileStream fs = new FileStream("local.data", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { fs.Seek(0, SeekOrigin.Begin); fs.SetLength(0); using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)) { foreach (var item in cacheData) { sw.WriteLine(item.Key + "=" + item.Value); } } } _cache = cacheData; } } }