获取指定文件夹下所有子目录及文件(树形)

本文介绍了一个实用的方法来获取指定文件夹及其子目录的所有文件和目录结构,并提供了两种展示形式:树形结构和下拉框形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. #region 获取指定文件夹下所有子目录及文件(树形)
  2.         /****************************************
  3.          * 函数名称:GetFoldAll(string Path)
  4.          * 功能说明:获取指定文件夹下所有子目录及文件(树形)
  5.          * 参    数:Path:详细路径
  6.          * 调用示列:
  7.          *           string strDirlist = Server.MapPath("templates");       
  8.          *           this.Literal1.Text = EC.FileObj.GetFoldAll(strDirlist);  
  9.         *****************************************/
  10.         /// <summary>
  11.         /// 获取指定文件夹下所有子目录及文件
  12.         /// </summary>
  13.         /// <param name="Path">详细路径</param>
  14.         public static string GetFoldAll(string Path)
  15.         {
  16.             string str = "";
  17.             DirectoryInfo thisOne = new DirectoryInfo(Path);
  18.             str = ListTreeShow(thisOne, 0, str);
  19.             return str;
  20.         }
  21.         /// <summary>
  22.         /// 获取指定文件夹下所有子目录及文件函数
  23.         /// </summary>
  24.         /// <param name="theDir">指定目录</param>
  25.         /// <param name="nLevel">默认起始值,调用时,一般为0</param>
  26.         /// <param name="Rn">用于迭加的传入值,一般为空</param>
  27.         /// <returns></returns>
  28.         public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn)//递归目录 文件
  29.         {
  30.             DirectoryInfo[] subDirectories = theDir.GetDirectories();//获得目录
  31.             foreach (DirectoryInfo dirinfo in subDirectories)
  32.             {
  33.                 if (nLevel == 0)
  34.                 {
  35.                     Rn += "├";
  36.                 }
  37.                 else
  38.                 {
  39.                     string _s = "";
  40.                     for (int i = 1; i <= nLevel; i++)
  41.                     {
  42.                         _s += "│ ";
  43.                     }
  44.                     Rn += _s + "├";
  45.                 }
  46.                 Rn += "<b>" + dirinfo.Name.ToString() + "</b><br />";
  47.                 FileInfo[] fileInfo = dirinfo.GetFiles();   //目录下的文件
  48.                 foreach (FileInfo fInfo in fileInfo)
  49.                 {
  50.                     if (nLevel == 0)
  51.                     {
  52.                         Rn += "│ ├";
  53.                     }
  54.                     else
  55.                     {
  56.                         string _f = "";
  57.                         for (int i = 1; i <= nLevel; i++)
  58.                         {
  59.                             _f += "│ ";
  60.                         }
  61.                         Rn += _f + "│ ├";
  62.                     }
  63.                     Rn += fInfo.Name.ToString() + " <br />";
  64.                 }
  65.                 Rn = ListTreeShow(dirinfo, nLevel + 1, Rn);
  66.             }
  67.             return Rn;
  68.         }
  69.         /****************************************
  70.          * 函数名称:GetFoldAll(string Path)
  71.          * 功能说明:获取指定文件夹下所有子目录及文件(下拉框形)
  72.          * 参    数:Path:详细路径
  73.          * 调用示列:
  74.          *            string strDirlist = Server.MapPath("templates");      
  75.          *            this.Literal2.Text = EC.FileObj.GetFoldAll(strDirlist,"tpl","");
  76.         *****************************************/
  77.         /// <summary>
  78.         /// 获取指定文件夹下所有子目录及文件(下拉框形)
  79.         /// </summary>
  80.         /// <param name="Path">详细路径</param>
  81.         ///<param name="DropName">下拉列表名称</param>
  82.         ///<param name="tplPath">默认选择模板名称</param>
  83.         public static string GetFoldAll(string Path,string DropName,string tplPath)
  84.         {
  85.             string strDrop = "<select name=/"" + DropName + "/" id=/"" + DropName + "/"><option value=/"/">--请选择详细模板--</option>";
  86.             string str = "";
  87.             DirectoryInfo thisOne = new DirectoryInfo(Path);
  88.             str = ListTreeShow(thisOne, 0, str,tplPath);
  89.             return strDrop+str+"</select>";
  90.         }
  91.         /// <summary>
  92.         /// 获取指定文件夹下所有子目录及文件函数
  93.         /// </summary>
  94.         /// <param name="theDir">指定目录</param>
  95.         /// <param name="nLevel">默认起始值,调用时,一般为0</param>
  96.         /// <param name="Rn">用于迭加的传入值,一般为空</param>
  97.         /// <param name="tplPath">默认选择模板名称</param>
  98.         /// <returns></returns>
  99.         public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn,string tplPath)//递归目录 文件
  100.         {
  101.             DirectoryInfo[] subDirectories = theDir.GetDirectories();//获得目录
  102.             foreach (DirectoryInfo dirinfo in subDirectories)
  103.             {
  104.                 Rn += "<option value=/"" + dirinfo.Name.ToString() + "/"";
  105.                 if (tplPath.ToLower() == dirinfo.Name.ToString().ToLower())
  106.                 {
  107.                     Rn += " selected ";
  108.                 }
  109.                 Rn += ">";
  110.                 if (nLevel == 0)
  111.                 {
  112.                     Rn += "┣";
  113.                 }
  114.                 else
  115.                 {
  116.                     string _s = "";
  117.                     for (int i = 1; i <= nLevel; i++)
  118.                     {
  119.                         _s += "│ ";
  120.                     }
  121.                     Rn += _s + "┣";
  122.                 }
  123.                 Rn += "" + dirinfo.Name.ToString() + "</option>";
  124.                 FileInfo[] fileInfo = dirinfo.GetFiles();   //目录下的文件
  125.                 foreach (FileInfo fInfo in fileInfo)
  126.                 {
  127.                     Rn += "<option value=/"" + dirinfo.Name.ToString()+"/"+fInfo.Name.ToString() + "/"";
  128.                     if (tplPath.ToLower() == fInfo.Name.ToString().ToLower())
  129.                     {
  130.                         Rn += " selected ";
  131.                     }
  132.                     Rn += ">";
  133.                     if (nLevel == 0)
  134.                     {
  135.                         Rn += "│ ├";
  136.                     }
  137.                     else
  138.                     {
  139.                         string _f = "";
  140.                         for (int i = 1; i <= nLevel; i++)
  141.                         {
  142.                             _f += "│ ";
  143.                         }
  144.                         Rn += _f + "│ ├";
  145.                     }
  146.                     Rn += fInfo.Name.ToString() + "</option>";
  147.                 }
  148.                 Rn = ListTreeShow(dirinfo, nLevel + 1, Rn, tplPath);
  149.             }
  150.             return Rn;
  151.         }
  152.         #endregion
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值