配置文件读取内容,进行完整性检查

网友投稿 259 2022-11-21

配置文件读取内容,进行完整性检查

前言 一个小功能,根据配置文件中内容,检查本地文件夹中内容是否齐全 第一层:我的文件夹中有四个文件夹,名字分别是Catalog、Cloudmask、MS、PAN; 第二层:Catalog文件夹中有这么几个后缀的文件:_browser.jpg;_browser.png;_browser.tif;_meta.xml;_thumb.jpg;.xml; Cloudmask文件夹中有这么几个后缀的文件:.dbf;.prj;.shp;.shx; MS文件夹中有这么几个后缀的文件:.tif/.xml;_browser.jpg;_browser.png;_browser.tif;_meta.xml;_rpc.txt;_thumb.jpg; PAN文件夹中有这么几个后缀的文件:.tif/.xml;_browser.jpg;_browser.png;_browser.tif;_meta.xml;_rpc.txt;_thumb.jpg; 我需要判断的完整性就是检查第一层和第二层是否有缺少的内容 配置文件内容: 遍历中的检查函数,对于有缺少的部分,会提示出来 private void singlecheck(string mainpath, Dictionary folderNameDic, int index, DataTable productDT) { if (!Directory.Exists(mainpath)) { t = "错误原因是缺少:" + "\n"; t += mainpath; productDT.Rows[index]["isfull"] = "×"; productDT.Rows[index]["memo"] += t; } else { string[] directories = Directory.GetDirectories(mainpath); List dirname = new List(); dirname.Add("Catalog"); dirname.Add("Cloudmask"); dirname.Add("MS"); dirname.Add("PAN"); t = "错误原因是缺少:" + "\n"; try { foreach (string directory in directories) { #region 检查Catalog if (directory.Substring(directory.LastIndexOf("\\") + 1) == "Catalog") { dirname.Remove("Catalog"); string PmsName = mainpath.Substring(mainpath.LastIndexOf("\\") + 1).Replace("_L1", ""); string MsName = PmsName.Replace("PMS", "MS"); string PanName = PmsName.Replace("PMS", "PAN"); string name = mainpath + "\\Catalog\\" + PmsName;//产品名 string fname1 = mainpath + "\\Catalog\\" + MsName; string fname2 = mainpath + "\\Catalog\\" + PanName; string[] files2 = CheckCatalog(folderNameDic, name, fname1, fname2); string[] tmpfiles = Directory.GetFiles(directory); string[] files1 = new string[tmpfiles.Count()]; List tmpList = new List(); foreach (string str in tmpfiles) { if (str.ToLower() == "thumbs.db") { continue; } tmpList.Add(str); } for (int j = 0; j < tmpList.Count; j++) { files1[j] = tmpList[j]; } if (judgeEqules(files2, files1) == true) { m = m + 1; } else { completeness("Catalog", files2, files1); } } #endregion #region 检查路径下cloudmask文件夹是否齐全 if (directory.Substring(directory.LastIndexOf("\\") + 1) == "Cloudmask") { dirname.Remove("Cloudmask"); string L1Name = mainpath.Substring(mainpath.LastIndexOf("\\") + 1).Replace("_PMS", ""); string fileName = mainpath + "\\Cloudmask\\" + L1Name; string[] tmpfiles = Directory.GetFiles(directory); string[] files1 = new string[tmpfiles.Count()]; List tmpList = new List(); foreach (string str in tmpfiles) { if (str.ToLower() == "thumbs.db") { continue; } tmpList.Add(str); } for (int j = 0; j < tmpList.Count; j++) { files1[j] = tmpList[j]; } string[] files2 = CheckCloudmask(folderNameDic, fileName); if (judgeEqules(files2, files1) == true) { m = m + 1; } if (judgeEqules(files2, files1) == false) { completeness("cloudmask", files2, files1); } } #endregion #region 检查MS if (directory.Substring(directory.LastIndexOf("\\") + 1) == "MS") { dirname.Remove("MS"); string MsName = mainpath.Substring(mainpath.LastIndexOf("\\") + 1).Replace("PMS", "MS"); string fileName = mainpath + "\\MS\\" + MsName; string[] files2 = CheckMS(folderNameDic, fileName); string[] tmpfiles = Directory.GetFiles(directory); string[] files1 = new string[tmpfiles.Count()]; List tmpList = new List(); foreach (string str in tmpfiles) { if (str.ToLower() == "thumbs.db") { continue; } tmpList.Add(str); } for (int j = 0; j < tmpList.Count; j++) { files1[j] = tmpList[j]; } if (judgeEqules(files2, files1) == true) { m = m + 1; } if (judgeEqules(files2, files1) == false) { completeness("MS", files2, files1); } } #endregion #region 检查PAN if (directory.Substring(directory.LastIndexOf("\\") + 1) == "PAN") { dirname.Remove("PAN"); string PanName = mainpath.Substring(mainpath.LastIndexOf("\\") + 1).Replace("PMS", "PAN"); string fileName = mainpath + "\\PAN\\" + PanName; string[] tmpfiles = Directory.GetFiles(directory); string[] files1 = new string[tmpfiles.Count()]; List tmpList = new List(); foreach (string str in tmpfiles) { if (str.ToLower() == "thumbs.db") { continue; } tmpList.Add(str); } for (int j = 0; j < tmpList.Count; j++) { files1[j] = tmpList[j]; } string[] files2 = CheckPAN(folderNameDic, fileName); if (judgeEqules(files2, files1) == true) { m = m + 1; } if (judgeEqules(files2, files1) == false) { completeness("PAN", files2, files1); } } #endregion } if (m == 4) { productDT.Rows[index]["isfull"] = "√"; } if (m < 4) { if (dirname.Count != 0) { foreach (string dir in dirname) { t += dir; } } productDT.Rows[index]["isfull"] = "×"; productDT.Rows[index]["memo"] += t; } m = 0; } catch (Exception ex) { m_Log.Error(ex); XtraMessageBox.Show("完整性检查失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } }获取4中的files private static string[] CheckCatalog(Dictionary folderNameDic, string name, string fname1, string fname2) { String[] catalogArray = folderNameDic["Catalog"]; List fileNames = new List(); foreach (String item in catalogArray) { fileNames.Add(fname1 + item); fileNames.Add(fname2 + item); } fileNames.Add(name + catalogArray.Last()); fileNames.Remove(fname1 + catalogArray.Last()); fileNames.Remove(fname2 + catalogArray.Last()); string[] files2 = fileNames.ToArray(); return files2; } private static string[] CheckCloudmask(Dictionary folderNameDic, string fileName) { String[] CloudmaskArray = folderNameDic["Cloudmask"]; List fileNames = new List(); foreach (String item in CloudmaskArray) { fileNames.Add(fileName + item); } string[] files2 = fileNames.ToArray(); return files2; } private static string[] CheckMS(Dictionary folderNameDic, string fileName) { String[] MSArray = folderNameDic["MS"]; List fileNames = new List(); foreach (String item in MSArray) { fileNames.Add(fileName + item); } string[] files2 = fileNames.ToArray(); return files2; } private static string[] CheckPAN(Dictionary folderNameDic, string fileName) { String[] PANArray = folderNameDic["PAN"]; List fileNames = new List(); foreach (String item in PANArray) { fileNames.Add(fileName + item); } string[] files2 = fileNames.ToArray(); return files2; }读取XML读取文件后缀 private Dictionary queryXml() { //Catalog Dictionary folderNameDic = new Dictionary(); string Catalog = System.Configuration.ConfigurationManager.AppSettings["Catalog"]; String[] catalogArray = Catalog.Split('/'); folderNameDic.Add("Catalog", catalogArray); //Cloudmask string Cloudmask = System.Configuration.ConfigurationManager.AppSettings["Cloudmask"]; String[] cloudmaskArray = Cloudmask.Split('/'); folderNameDic.Add("Cloudmask", cloudmaskArray); //MS string MS = System.Configuration.ConfigurationManager.AppSettings["MS"]; String[] MSArray = MS.Split('/'); folderNameDic.Add("MS", MSArray); //PAN string PAN = System.Configuration.ConfigurationManager.AppSettings["PAN"]; String[] PANArray = PAN.Split('/'); folderNameDic.Add("PAN", PANArray); return folderNameDic; } private bool judgeEqules(string[] arg1, string[] arg2)//判断两个数组是否相等 { if (arg1.Length + 1 < arg2.Length) { return false; } for (int i = 0; i < arg1.Length; i++) { if (!arg2.Contains(arg1[i])) { return false; } } return true; }返回两个不相等数组中不一样的地方 private string completeness(string folderName, string[] arg1, string[] arg2)//返回两个不相等数组中不一样的地方 { List paths = new List(); for (int i = 0; i < arg1.Length; i++) { if (!arg2.Contains(arg1[i])) { paths.Add(arg1[i]); } } for (int x = 0; x < paths.Count; x++) { t += folderName + paths[x].ToString().Substring(paths[x].LastIndexOf("\\")) + "\n"; } return t; }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:米尔科技MYD-C7Z015开发板介绍
下一篇:获取路径下所有文件以及子文件夹中文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~