using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RailLocalMeter { public class FileOption { static string dbFile = $"{AppConfigCache.path}/data/"; /// /// 计量数据写入本地文件 /// /// /// /// public static bool WriterDb(T actualDb, FileTypeEnum fileType, out string msgInfo) { Log lg = Log.GetInstance(); try { string sPath = dbFile + (fileType == FileTypeEnum.一次数据 ? "FristDb.data" : "actualDb.data"); //判断文件是否存在 if (!File.Exists(sPath)) { //不存在则创建文件并直接写入数据 File.WriteAllText(sPath, JsonConvert.SerializeObject(actualDb, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })+"\n"); } else { List ls = new List(); ls.Add(JsonConvert.SerializeObject(actualDb, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })); File.AppendAllLines(sPath, ls); } msgInfo = "计量完成"; return true; } catch (Exception ex) { lg.WriteLog(LogType.WriteDbLog, "写入信息失败:" + ex.Message); msgInfo = "写入数据失败:" + ex.Message; return false; } } /// /// 读取本地计量数据 /// /// /// /// public static List ReadDb(FileTypeEnum fileType, ref bool readFlag, ref string msgInfo) { Log lg = Log.GetInstance(); List list = new List(); try { string sPath = dbFile + (fileType == FileTypeEnum.一次数据 ? "FristDb.data" : "actualDb.data"); if (File.Exists(sPath)) { string[] strs = File.ReadAllLines(sPath); foreach (string str in strs) { T first = JsonConvert.DeserializeObject(str); list.Add(first); } if (list.Count > 0) readFlag = true; } } catch (Exception ex) { lg.WriteLog(LogType.WriteDbLog, "读取失败:" + ex.Message); msgInfo = "读取失败:" + ex.Message; readFlag = false; } return list; } /// /// 清理文件数据 /// public static void clearFile(FileTypeEnum fileType) { Log lg = Log.GetInstance(); try { string sPath = dbFile + (fileType == FileTypeEnum.一次数据 ? "FristDb.data" : "actualDb.data"); if (File.Exists(sPath)) { //不存在则创建文件并直接写入数据 File.WriteAllText(sPath, ""); } } catch (Exception ex) { lg.WriteLog(LogType.WriteDbLog, "数据进行清理失败:" + ex.Message); } } } public enum FileTypeEnum { 一次数据, 结净数据, } }