配置文件读取内容,进行完整性检查
来源:互联网 发布:明基ew2775zh 知乎 编辑:程序博客网 时间:2024/06/05 04:02
前言
一个小功能,根据配置文件中内容,检查本地文件夹中内容是否齐全
第一层:我的文件夹中有四个文件夹,名字分别是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;
我需要判断的完整性就是检查第一层和第二层是否有缺少的内容
配置文件内容:
<!--比较完整性设置Catalog文件夹--> <add key="Catalog" value="_browser.jpg/_browser.png/_browser.tif/_meta.xml/_thumb.jpg/.xml"/> <!--比较完整性设置Cloudmask文件夹--> <add key="Cloudmask" value=".dbf/.prj/.shp/.shx"/> <!--比较完整性设置MS文件夹--> <add key="MS" value=".tif/.xml/_browser.jpg/_browser.png/_browser.tif/_meta.xml/_rpc.txt/_thumb.jpg"/> <!--比较完整性设置PAN文件夹--> <add key="PAN" value=".tif/.xml/_browser.jpg/_browser.png/_browser.tif/_meta.xml/_rpc.txt/_thumb.jpg"/>遍历中的检查函数,对于有缺少的部分,会提示出来
private void singlecheck(string mainpath, Dictionary<String, String[]> 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<string> dirname = new List<string>(); 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<string> tmpList = new List<string>(); 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<string> tmpList = new List<string>(); 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<string> tmpList = new List<string>(); 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<string> tmpList = new List<string>(); 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<String, String[]> folderNameDic, string name, string fname1, string fname2) { String[] catalogArray = folderNameDic["Catalog"]; List<String> fileNames = new List<String>(); foreach (String item in catalogArray) { fileNames.Add(fname1 + item); fileNames.Add(fname2 + item); } fileNames.Add(name + catalogArray.Last<String>()); fileNames.Remove(fname1 + catalogArray.Last<String>()); fileNames.Remove(fname2 + catalogArray.Last<String>()); string[] files2 = fileNames.ToArray<String>(); return files2; } private static string[] CheckCloudmask(Dictionary<String, String[]> folderNameDic, string fileName) { String[] CloudmaskArray = folderNameDic["Cloudmask"]; List<String> fileNames = new List<String>(); foreach (String item in CloudmaskArray) { fileNames.Add(fileName + item); } string[] files2 = fileNames.ToArray<String>(); return files2; } private static string[] CheckMS(Dictionary<String, String[]> folderNameDic, string fileName) { String[] MSArray = folderNameDic["MS"]; List<String> fileNames = new List<String>(); foreach (String item in MSArray) { fileNames.Add(fileName + item); } string[] files2 = fileNames.ToArray<String>(); return files2; } private static string[] CheckPAN(Dictionary<String, String[]> folderNameDic, string fileName) { String[] PANArray = folderNameDic["PAN"]; List<String> fileNames = new List<String>(); foreach (String item in PANArray) { fileNames.Add(fileName + item); } string[] files2 = fileNames.ToArray<String>(); return files2; }读取XML读取文件后缀
private Dictionary<String, String[]> queryXml() { //Catalog Dictionary<String, String[]> folderNameDic = new Dictionary<string, string[]>(); 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<string> paths = new List<string>(); 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; }
0 0
- 配置文件读取内容,进行完整性检查
- 关于CRC校验进行完整性检查实现
- 读取Properties配置文件内容
- 读取配置文件内容
- java读取配置文件内容
- CRC32进行程序完整性检查,bootloader程序自检
- 读取配置文件的节点内容
- 读取配置文件的节点内容
- 读取配置文件的内容代码
- java读取工程配置文件内容
- 读取配置文件进行jdbc连接
- 系统完整性检查(转)
- 完整性检查工具Nabou
- 使用PHP对非法内容进行检查
- 使用PHP对非法内容进行检查
- 读取INI配置文件内容(头文件head)
- 读取INI配置文件内容(源文件C)
- java修改读取properties配置文件中的内容
- golang(5)使用beego 开发 api server 和前端同学拆分开发,使用swagger
- 代码整洁之道精华——第四章 注释
- 关于Android用JDBC远程直接连接Mysql的实践
- PTA.汽车收费(多态)
- JDBC:深入理解PreparedStatement和Statement
- 配置文件读取内容,进行完整性检查
- 致我的同事
- 计算机视觉学习
- Linux的gcc的使用
- 【蓝桥杯单片机组】大概是最后一篇了,the lastday 蓝桥
- 设计模式之单例模式(线程安全)
- AD16 空格键不能旋转元器件与高亮显示网络的解决方法
- 深入理解C语言变量和内存——整理篇
- 历届试题 核桃的数量