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 }));
}
else
{
List ls = new List();
ls.Add(JsonConvert.SerializeObject(actualDb));
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(dbFile))
{
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()
{
Log lg = Log.GetInstance();
try
{
if (File.Exists(dbFile))
{
//不存在则创建文件并直接写入数据
File.WriteAllText(dbFile, "");
}
} catch (Exception ex)
{
lg.WriteLog(LogType.WriteDbLog, "数据进行清理失败:" + ex.Message);
}
}
}
public enum FileTypeEnum
{
一次数据,
结净数据,
}
}