using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using IStation.Model; namespace IStation.WinFrmUI.River { internal class TideFromMonitorHelper { /// /// /// /// /// /// static public List GetByDay2(DateTime startday, out string error) { error = null; return ReadList(startday ); } /// /// 读取 /// /// /// /// /// static public List GetByDayRange(DateTime Startday, DateTime Endday, out string error) { var waterLevels长江 = new List(); for (DateTime currentDate = Startday; currentDate <= Endday; currentDate = currentDate.AddDays(1)) { var list1 = ReadList(currentDate ); if (list1 != null && list1.Count > 0) { for (int h = 0; h < list1.Count; h++) { waterLevels长江.Add( new TimeWaterLevel( list1[h].Time, list1[h].Level)); } } } error = null; return waterLevels长江; } static private List ReadList(DateTime day ) { var list = new List(); var folder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "Tide", "FromMonitor", day.Year.ToString(), day.ToString("yyyy-MM")); if (!System.IO.Directory.Exists(folder)) { System.IO.Directory.CreateDirectory(folder); return null; } var fileName = System.IO.Path.Combine(folder, string.Format("{0}.csv", day.ToString("yyyy-MM-dd"))); if (!System.IO.File.Exists(fileName)) { return null; } //文件流读取 System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open); System.IO.StreamReader sr = new System.IO.StreamReader(fs, Encoding.GetEncoding("gb2312")); string tempText; int line = 0; while ((tempText = sr.ReadLine()) != null) { line++; string[] arr = tempText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); //一般第一行为标题,所以取出来作为标头 list.Add(new Model.TimeWaterLevel(Convert.ToDateTime(arr[0]), Convert.ToDouble(arr[1]))); } //关闭流 sr.Close(); fs.Close(); return list; } /// /// 写 /// /// /// static public void SaveList(DateTime day, List list) { if (list == null) return; try { var folder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "Tide", "FromMonitor", day.Year.ToString(), day.ToString("yyyy-MM")); if (!System.IO.Directory.Exists(folder)) { System.IO.Directory.CreateDirectory(folder); } var fileName = System.IO.Path.Combine(folder, string.Format("{0}.csv", day.ToString("yyyy-MM-dd"))); StreamWriter streamWriter = new StreamWriter(fileName, false, System.Text.Encoding.GetEncoding("gb2312")); StringBuilder StringBuilder = new StringBuilder(); // 写出数据 foreach (var m in list) { StringBuilder.AppendLine(); StringBuilder.AppendFormat("{0},{1}", m.Time.ToString("yyyy-MM-dd HH:mm:ss"), m.Level); } streamWriter.Write(StringBuilder.ToString()); streamWriter.Flush(); streamWriter.Close(); } catch (Exception ex) { IStation.LogHelper.WriteError("write tide file error:" + ex.Message, ex); return; } } } }