예제 #1
0
        /// <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);
        }
예제 #2
0
        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());
        }