private bool GetFile(string srcDataSourceDir, ref List ExcelFilelist, ErrInfo pErrInfo)
{
bool pFlagOK = true; //处理标志,表示是否处理正确
short pErrPos = 0;
bool pOccurredException = false;//是否发生了异常错误
try
{
//开始处理1...
pErrPos = 1;
DirectoryInfo mydir = new DirectoryInfo(srcDataSourceDir);
FileInfo[] fileInfo = mydir.GetFiles();//文件
DirectoryInfo[] directs = mydir.GetDirectories();//文件夹
foreach (FileInfo f in fileInfo)
{
string aLastName = f.FullName.Substring(f.FullName.LastIndexOf(".") + 1, (f.FullName.Length - f.FullName.LastIndexOf(".") - 1)).Trim().ToLower();//扩展名
if (aLastName == "xls" || aLastName == "xlsx")
{
ExcelFilelist.Add(f.FullName);//将文件路径添加到集合
}
}
foreach (DirectoryInfo dd in directs)
{
GetFile(dd.FullName, ref ExcelFilelist, pErrInfo);//递归
}
}
catch (Exception ex)
{
pFlagOK = false;
pErrInfo.OccurredException = ex;
pErrInfo.Content.Append(ex.Message);
pOccurredException = true;//发生了异常错误
}
finally
{
//如果处理失败,并且有错误信息那么就把错误信息拼接上该函数的名字标识,便于主程序查找分析异常错误的位置
if (!pFlagOK && pErrInfo.Content.Length > 0)
{
//获取当前函数名称
string className = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName;
string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
StringBuilder tempBuilder = new StringBuilder();
//用当前命名空间名.类名.函数名-->·错误信息的格式返回错误描述
tempBuilder.Append(className + "." + methodName + "-->");
//如果属于异常错误,则需要在错误信息中加入错误位置标记信息
if (pOccurredException)
{
tempBuilder.Append(" ErrPos: ");
tempBuilder.Append(pErrPos);
tempBuilder.Append(", ");
}
pErrInfo.Content.Insert(0, tempBuilder.ToString());
tempBuilder = null;
}
}
//返回函数处理结果给外部的函数调用者
return pFlagOK;
}