C# 循环获取目录

  #region 获取目录

        /// <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
原文地址:https://www.cnblogs.com/wangchuang/p/3322019.html