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

来源:互联网 发布:明基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
原创粉丝点击