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;
}
}
}
}