using CnasSynchronousCommon; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; namespace CnasSynchronusDAL { public class ReadFileCommon01 : BaseReadFileMode { /// /// 分割每个元素的依据。0代表“ ”,1代表“\t”,2代表0和1的集合,3代表逗号 /// public static string SplitType { get; set; } /// /// 起始行数(部分txt文件中,表数据的起始位置不是第一行,而是从其他行开始) /// public static int StartLineIndex { get; set; } /// /// 是否自定义创建日期字段 /// public static bool IfCustomCreateDateColumn { get; set; } /// /// 后缀名类似于(.txt) /// public static string Suffix { get; set; } /// /// 以日期命名文件名称时的日期格式(yyyyMMdd) /// public static string FileNameFormat { get; set; } public static DataTable ReadTableStructure(string strFilePath) { DataTable dt = new DataTable(); try { List arryList = ReadFileMessage(strFilePath); if (arryList.Count >= StartLineIndex) { string[] strRowDatas = arryList[StartLineIndex].Trim().Split(GetSplitStrings(), StringSplitOptions.RemoveEmptyEntries); if (strRowDatas.Length > 0) { for (int i = 0; i < strRowDatas.Length; i++) { dt.Columns.Add($"F{i + 1}"); } if (IfCustomCreateDateColumn) dt.Columns.Add("日期(系统添加)"); } } } catch (Exception ex) { AppLog.Error(ex.Message); } return dt; } internal static DataTable ReadTableData(string strFilePath) { DataTable dt = new DataTable(); try { List arryList = ReadFileMessage(strFilePath); if (arryList.Count >= StartLineIndex) { string[] strRowDatas = arryList[StartLineIndex].Trim().Split(GetSplitStrings(), StringSplitOptions.RemoveEmptyEntries); if (strRowDatas.Length > 0) { for (int i = 0; i < strRowDatas.Length; i++) { dt.Columns.Add($"F{i + 1}"); } if (IfCustomCreateDateColumn) dt.Columns.Add("日期(系统添加)"); } } if (arryList.Count > 0) { for (int i = 0; i < arryList.Count; i++) { if (i+10) { DataRow dr = dt.NewRow(); for (int j = 0; j < strRowDatas.Length; j++) { dr[$"F{j + 1}"] = strRowDatas[j].Trim(); } if (IfCustomCreateDateColumn) { if (FileNameFormat.Length > 0&&Suffix.Length>0) { int subLength = (Suffix.Length - 1) * 2 + 1 + FileNameFormat.Length; DateTime dtTime = DateTime.ParseExact(string.Concat(strFilePath.Substring(strFilePath.Length - subLength, subLength).Take(FileNameFormat.Length)), FileNameFormat, new System.Globalization.CultureInfo("zh-CN", true)); dr["日期(系统添加)"] = dtTime.ToString(FileNameFormat); } } dt.Rows.Add(dr); } } } } catch (Exception ex) { AppLog.Error(ex.Message); } return dt; } private static List ReadFileMessage(string strFilePath) { List arryList = new List(); if (File.Exists(strFilePath)) { FileStream fileStream = new FileStream(strFilePath, FileMode.Open, FileAccess.Read, FileShare.Read); StreamReader _StreamReaderKey = new StreamReader(fileStream, GetType(strFilePath)); string strLine = ""; while (!string.IsNullOrEmpty((strLine = _StreamReaderKey.ReadLine()))) { arryList.Add(strLine); } fileStream.Close(); } return arryList; } private static string[] GetSplitStrings() { string[] splitStrings =null; switch (SplitType) { case "0": splitStrings = new string[] { " "}; break; case "1": splitStrings = new string[] { "\t" }; break; case "2": splitStrings = new string[] { " ","\t" }; break; case "3": splitStrings = new string[] { "," }; break; } return splitStrings; } } }