配置文件读取内容,进行完整性检查
前言
一个小功能,根据配置文件中内容,检查本地文件夹中内容是否齐全
第一层:我的文件夹中有四个文件夹,名字分别是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小时内删除侵权内容。
暂时没有评论,来抢沙发吧~