FileOption.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace RailLocalMeter
  9. {
  10. public class FileOption
  11. {
  12. static string dbFile = $"{AppConfigCache.path}/data/";
  13. /// <summary>
  14. /// 计量数据写入本地文件
  15. /// </summary>
  16. /// <param name="actualDb"></param>
  17. /// <param name="msgInfo"></param>
  18. /// <returns></returns>
  19. public static bool WriterDb<T>(T actualDb, FileTypeEnum fileType, out string msgInfo)
  20. {
  21. Log lg = Log.GetInstance();
  22. try
  23. {
  24. string sPath = dbFile + (fileType == FileTypeEnum.一次数据 ? "FristDb.data" : "actualDb.data");
  25. //判断文件是否存在
  26. if (!File.Exists(sPath))
  27. {
  28. //不存在则创建文件并直接写入数据
  29. File.WriteAllText(sPath, JsonConvert.SerializeObject(actualDb, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }));
  30. }
  31. else
  32. {
  33. List<string> ls = new List<string>();
  34. ls.Add(JsonConvert.SerializeObject(actualDb));
  35. File.AppendAllLines(sPath, ls);
  36. }
  37. msgInfo = "计量完成";
  38. return true;
  39. }
  40. catch (Exception ex)
  41. {
  42. lg.WriteLog(LogType.WriteDbLog, "写入信息失败:" + ex.Message);
  43. msgInfo = "写入数据失败:" + ex.Message;
  44. return false;
  45. }
  46. }
  47. /// <summary>
  48. /// 读取本地计量数据
  49. /// </summary>
  50. /// <param name="readFlag"></param>
  51. /// <param name="msgInfo"></param>
  52. /// <returns></returns>
  53. public static List<T> ReadDb<T>(FileTypeEnum fileType, ref bool readFlag, ref string msgInfo)
  54. {
  55. Log lg = Log.GetInstance();
  56. List<T> list = new List<T>();
  57. try
  58. {
  59. string sPath = dbFile + (fileType == FileTypeEnum.一次数据 ? "FristDb.data" : "actualDb.data");
  60. if (File.Exists(dbFile))
  61. {
  62. string[] strs = File.ReadAllLines(sPath);
  63. foreach (string str in strs)
  64. {
  65. T first = JsonConvert.DeserializeObject<T>(str);
  66. list.Add(first);
  67. }
  68. if (list.Count > 0) readFlag = true;
  69. }
  70. }
  71. catch (Exception ex)
  72. {
  73. lg.WriteLog(LogType.WriteDbLog, "读取失败:" + ex.Message);
  74. msgInfo = "读取失败:" + ex.Message;
  75. readFlag = false;
  76. }
  77. return list;
  78. }
  79. /// <summary>
  80. /// 清理文件数据
  81. /// </summary>
  82. public static void clearFile()
  83. {
  84. Log lg = Log.GetInstance();
  85. try
  86. {
  87. if (File.Exists(dbFile))
  88. {
  89. //不存在则创建文件并直接写入数据
  90. File.WriteAllText(dbFile, "");
  91. }
  92. } catch (Exception ex)
  93. {
  94. lg.WriteLog(LogType.WriteDbLog, "数据进行清理失败:" + ex.Message);
  95. }
  96. }
  97. }
  98. public enum FileTypeEnum
  99. {
  100. 一次数据,
  101. 结净数据,
  102. }
  103. }