using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using IStation.Model; namespace IStation.WinFrmUI.River { internal class TideFromBookHelper { /// /// 获取潮汐数据 /// static public List GetByDay1( DateTime startday, out string error) { error = null; return ReadList(startday ); } /// /// /// /// /// /// static public List GetByDay2(DateTime startday, out string error) { var waterLevels长江 = new List(); error = null; var list = ReadList(startday ); if (list != null) { foreach (var h in list) { waterLevels长江.Add( new TimeWaterLevel( new DateTime(startday.Year, startday.Month, startday.Day, h.Hour, 0, 0), h.Level)); } } else { error = null; } return waterLevels长江; } /// /// 读取 /// /// /// /// /// 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 < 24; h++) { waterLevels长江.Add( new TimeWaterLevel( new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, h, 0, 0), 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", "FromBook", 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.TileLevel(Convert.ToInt32(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", "FromBook", 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.Hour, m.Level); } streamWriter.Write(StringBuilder.ToString()); streamWriter.Flush(); streamWriter.Close(); } catch (Exception ex) { IStation.LogHelper.WriteError("write tide file error:" + ex.Message, ex); return; } } } }