用递归查询一个目录下所有的文件信息,并筛选出Excel文件

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;
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值