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

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

  /****************************************

  * 函数名称:GetFoldAll(string Path)

  * 功能说明:获取指定文件夹下所有子目录及文件(树形)

  * 参    数:Path:详细路径

  * 调用示列:

  *           string strDirlist = Server.MapPath("templates");

  *           this.Literal1.Text = EC.FileObj.GetFoldAll(strDirlist);

  *****************************************/

  /// <summary>

  /// 获取指定文件夹下所有子目录及文件

  /// </summary>

  /// <param name="Path">详细路径</param>

  public static string GetFoldAll(string Path)

  {

  string str = "";

  DirectoryInfo thisOne = new DirectoryInfo(Path);

  str = ListTreeShow(thisOne, 0, str);

  return str;

  }

  /// <summary>

  /// 获取指定文件夹下所有子目录及文件函数

  /// </summary>

  /// <param name="theDir">指定目录</param>

  /// <param name="nLevel">默认起始值,调用时,一般为0</param>

  /// <param name="Rn">用于迭加的传入值,一般为空</param>

  /// <returns></returns>

  public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn)//递归目录 文件

  {

  DirectoryInfo[] subDirectories = theDir.GetDirectories();//获得目录

  foreach (DirectoryInfo dirinfo in subDirectories)

  {

  if (nLevel == 0)

  {

  Rn += "├";

  }

  else

  {

  string _s = "";

  for (int i = 1; i <= nLevel; i++)

  {

  _s += "│ ";

  }

  Rn += _s + "├";

  }

  Rn += "<b>" + dirinfo.Name.ToString() + "</b><br />";

  FileInfo[] fileInfo = dirinfo.GetFiles();   //目录下的文件

  foreach (FileInfo fInfo in fileInfo)

  {

  if (nLevel == 0)

  {

  Rn += "│ ├";

  }

  else

  {

  string _f = "";

  for (int i = 1; i <= nLevel; i++)

  {

  _f += "│ ";

  }

  Rn += _f + "│ ├";

  }

  Rn += fInfo.Name.ToString() + " <br />";

  }

  Rn = ListTreeShow(dirinfo, nLevel + 1, Rn);

  }

  return Rn;

  }

  /****************************************

  * 函数名称:GetFoldAll(string Path)

  * 功能说明:获取指定文件夹下所有子目录及文件(下拉框形)

  * 参    数:Path:详细路径

  * 调用示列:

  *            string strDirlist = Server.MapPath("templates");

  *            this.Literal2.Text = EC.FileObj.GetFoldAll(strDirlist,"tpl","");

  *****************************************/

  /// <summary>

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

  /// </summary>

  /// <param name="Path">详细路径</param>

  ///<param name="DropName">下拉列表名称</param>

  ///<param name="tplPath">默认选择模板名称</param>

  public static string GetFoldAll(string Path,string DropName,string tplPath)

  {

  string strDrop = "<select name=\"" + DropName + "\" id=\"" + DropName + "\"><option value=\"\">--请选择详细模板--</option>";

  string str = "";

  DirectoryInfo thisOne = new DirectoryInfo(Path);

  str = ListTreeShow(thisOne, 0, str,tplPath);

  return strDrop+str+"</select>";

  }

  /// <summary>

  /// 获取指定文件夹下所有子目录及文件函数

  /// </summary>

  /// <param name="theDir">指定目录</param>

  /// <param name="nLevel">默认起始值,调用时,一般为0</param>

  /// <param name="Rn">用于迭加的传入值,一般为空</param>

  /// <param name="tplPath">默认选择模板名称</param>

  /// <returns></returns>

  public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn,string tplPath)//递归目录 文件

  {

  DirectoryInfo[] subDirectories = theDir.GetDirectories();//获得目录

  foreach (DirectoryInfo dirinfo in subDirectories)

  {

  Rn += "<option value=\"" + dirinfo.Name.ToString() + "\"";

  if (tplPath.ToLower() == dirinfo.Name.ToString().ToLower())

  {

  Rn += " selected ";

  }

  Rn += ">";

  if (nLevel == 0)

  {

  Rn += "┣";

  }

  else

  {

  string _s = "";

  for (int i = 1; i <= nLevel; i++)

  {

  _s += "│ ";

  }

  Rn += _s + "┣";

  }

  Rn += "" + dirinfo.Name.ToString() + "</option>";

  FileInfo[] fileInfo = dirinfo.GetFiles();   //目录下的文件

  foreach (FileInfo fInfo in fileInfo)

  {

  Rn += "<option value=\"" + dirinfo.Name.ToString()+"/"+fInfo.Name.ToString() + "\"";

  if (tplPath.ToLower() == fInfo.Name.ToString().ToLower())

  {

  Rn += " selected ";

  }

  Rn += ">";

  if (nLevel == 0)

  {

  Rn += "│ ├";

  }

  else

  {

  string _f = "";

  for (int i = 1; i <= nLevel; i++)

  {

  _f += "│ ";

  }

  Rn += _f + "│ ├";

  }

  Rn += fInfo.Name.ToString() + "</option>";

  }

  Rn = ListTreeShow(dirinfo, nLevel + 1, Rn, tplPath);

  }

  return Rn;

  }

  #endregion