public void loadFromFile() { if (!Directory.Exists(logPath_)) { return; } // 总流量统计文件 /// /// 文件结构 /// LastUpdate [date] [time] /// UP [readable string] [amount] /// DOWN [readable string] [amount] /// 每行每个数据空格分隔 /// var overallPath = Path.Combine(logPath_, Global.StatisticLogOverall); if (File.Exists(overallPath)) { try { using (var overallReader = new StreamReader(overallPath)) { while (!overallReader.EndOfStream) { var line = overallReader.ReadLine(); if (line.StartsWith("LastUpdate")) { } else if (line.StartsWith("UP")) { var datas = line.Split(' '); if (datas.Length < 3) { return; } TotalUp = ulong.Parse(datas[2]); } else if (line.StartsWith("DOWN")) { var datas = line.Split(' '); if (datas.Length < 3) { return; } TotalDown = ulong.Parse(datas[2]); } else if (line.StartsWith("*")) { var datas = line.Split(' '); if (datas.Length < 6) { return; } var name = datas[1]; var address = datas[2]; var port = int.Parse(datas[3]); var path = datas[4]; var totalUp = ulong.Parse(datas[5]); var totalDown = ulong.Parse(datas[6]); var index = Statistic.FindIndex(item => item.address == address && item.port == port); if (index != -1) { Statistic[index].totalUp = totalUp; Statistic[index].totalDown = totalDown; } else { var s = new Mode.ServerStatistics(name, address, port, path, totalUp, totalDown, 0, 0); Statistic.Add(s); } } } } } catch { } } // 当天流量记录文件 var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToLongDateString()}.txt"); if (File.Exists(dailyPath)) { try { using (var dailyReader = new StreamReader(dailyPath)) { while (!dailyReader.EndOfStream) { var line = dailyReader.ReadLine(); if (line.StartsWith("LastUpdate")) { } else if (line.StartsWith("*")) { var datas = line.Split(' '); if (datas.Length < 6) { return; } var name = datas[1]; var address = datas[2]; var port = int.Parse(datas[3]); var path = datas[4]; var todayUp = ulong.Parse(datas[5]); var todayDown = ulong.Parse(datas[6]); var index = Statistic.FindIndex(item => item.address == address && item.port == port); if (index != -1) { Statistic[index].todayUp = todayUp; Statistic[index].todayDown = todayDown; } else { var s = new Mode.ServerStatistics(name, address, port, path, 0, 0, todayUp, todayDown); Statistic.Add(s); } } } } } catch { } } }
public void LoadFromFile() { if (!Directory.Exists(logPath_)) { return; } // 总流量统计文件 /// /// 文件结构 /// LastUpdate [date] [time] /// UP [readable string] [amount] /// DOWN [readable string] [amount] /// 每行每个数据空格分隔 try { Utils.SaveLog(logPath_ + Global.StatisticLogOverall); var overallPath = Path.Combine(logPath_, Global.StatisticLogOverall); if (File.Exists(overallPath)) { using (var overallReader = new StreamReader(overallPath)) { while (!overallReader.EndOfStream) { var line = overallReader.ReadLine(); if (line.StartsWith("LastUpdate")) { } else if (line.StartsWith("UP")) { var datas = line.Split(' '); if (datas.Length < 3) { return; } TotalUp = ulong.Parse(datas[2]); } else if (line.StartsWith("DOWN")) { var datas = line.Split(' '); if (datas.Length < 3) { return; } TotalDown = ulong.Parse(datas[2]); } else if (line.StartsWith("*")) { var datas = line.Split(' '); if (datas.Length < 8) { return; } var name = datas[1]; var address = datas[2]; var port = int.Parse(datas[3]); var path = datas[4]; var host = datas[5]; var totalUp = ulong.Parse(datas[6]); var totalDown = ulong.Parse(datas[7]); var temp = new ServerStatistics(name, address, port, path, host, 0, 0, 0, 0); var index = Statistic.FindIndex(item => Utils.IsIdenticalServer(item, temp)); if (index != -1) { Statistic[index].totalUp = totalUp; Statistic[index].totalDown = totalDown; } else { var s = new Mode.ServerStatistics(name, address, port, path, host, totalUp, totalDown, 0, 0); Statistic.Add(s); } } } } } } catch (Exception ex) { Utils.SaveLog(ex.Message, ex); } try { Utils.SaveLog(logPath_ + $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt"); var dailyPath = Path.Combine(logPath_, $"{DateTime.Now.ToString("yyyy-MM-dd")}.txt"); if (File.Exists(dailyPath)) { using (var dailyReader = new StreamReader(dailyPath)) { while (!dailyReader.EndOfStream) { var line = dailyReader.ReadLine(); if (line.StartsWith("LastUpdate")) { } else if (line.StartsWith("*")) { var datas = line.Split(' '); if (datas.Length < 8) { return; } var name = datas[1]; var address = datas[2]; var port = int.Parse(datas[3]); var path = datas[4]; var host = datas[5]; var todayUp = ulong.Parse(datas[6]); var todayDown = ulong.Parse(datas[7]); var temp = new ServerStatistics(name, address, port, path, host, 0, 0, 0, 0); var index = Statistic.FindIndex(item => Utils.IsIdenticalServer(item, temp)); if (index != -1) { Statistic[index].todayUp = todayUp; Statistic[index].todayDown = todayDown; } else { var s = new Mode.ServerStatistics(name, address, port, path, host, 0, 0, todayUp, todayDown); Statistic.Add(s); } } } } } } catch (Exception ex) { Utils.SaveLog(ex.Message, ex); } }