/// <summary> /// 读取指定文件的信息转成TableClass /// </summary> public static TableClass ReadFile(string file_path, string file_name) { TableClass table_class = new TableClass(); table_class.class_name = file_name; // 1.读取文本 string[] lines = File.ReadAllLines(file_path); int length = lines.Length; if (length <= TableVaildConst.LINE_VAILD) { return(null); } // 2.解析头部文件 string[] dess = lines[TableVaildConst.LINE_DES].Split(','); string[] props = lines[TableVaildConst.LINE_PROP].Split(','); string[] keys = lines[TableVaildConst.LINE_KEY].Split(','); string[] vailds = lines[TableVaildConst.LINE_VAILD].Split(','); // 3.确定目前有多少个数据 List <TableProp> tables = new List <TableProp>(); for (int i = 0; i < dess.Length; i++) { TableProp prop = new TableProp(); prop.key = keys[i]; prop.des = dess[i]; prop.prop = props[i]; prop.vaild = vailds[i]; tables.Add(prop); } // 4.解析从第五行开始的文本内容 for (int i = TableVaildConst.LINE_VAILD + 1; i < lines.Length; i++) { // 这一行的内容分解 属性和数据联合起来 string[] contents = lines[i].Split(TableVaildConst.SPLIT); for (int j = 0; j < contents.Length; j++) { tables[j].AddData(contents[j]); } } table_class.AddData(tables); return(table_class); }
public static void CheckVaild() { map.Clear(); // 1.查找指定目录下的所有csv文件 string[] files = Directory.GetFiles(CnfConst.csv_path); // 2.依次读取文件的相关信息 for (int i = 0; i < files.Length; i++) { string file_name = FileHelper.GetFileNameByPath(files[i]); if (TableVaildConst.ignore_files.Contains(file_name)) { continue; } TableClass data = TableVaildHelper.ReadFile(files[i], file_name); map.Add(data.class_name, data); } StringBuilder sb = new StringBuilder(); // 3.依次检测文件的有效性 foreach (var info in map) { string mess = info.Value.CheckAllVaild(); if (string.IsNullOrEmpty(mess)) { continue; } sb.AppendLine(mess); } if (File.Exists(TableVaildConst.table_vaild_report)) { File.Delete(TableVaildConst.table_vaild_report); } File.WriteAllText(TableVaildConst.table_vaild_report, sb.ToString()); }