private void FindFile2(string strPath)
    {
        DirectoryInfo mydir = new DirectoryInfo(strPath);
        foreach (DirectoryInfo Folder in mydir.GetDirectories())
        {
            foreach (FileInfo f in mydir.GetFiles("*.*"))
            {
                 lb3.Items.Add(mydir + f.ToString() + "\\ ");
            }
            FindFile2(mydir+Folder.ToString()+"\\");
        }
    }只遍历一层,求解  。
另:打了断点,不进入相应方法的代码,而直接出结果,求解

解决方案 »

  1.   


            protected void ShowDirs(string path)
            {
                DirectoryInfo dir = new DirectoryInfo(path);
                if (dir.Exists)
                { 
                    foreach(DirectoryInfo subDir in dir.GetDirectories())
                    {
                        Response.Write(subDir.FullName + "<br />");
                        ShowDirs(subDir.FullName);
                    }
                    foreach (FileInfo file in dir.GetFiles())
                    {
                        Response.Write(file.FullName + "<br />");
                    }
                }
            }
      

  2.   

    重载方法...public static string[] GetDirectories(string path,string searchPattern,SearchOption searchOption)SearchOption.AllDirectories 在搜索操作中包括当前目录和所有子目录。此选项在搜索中包括重解析点,比如安装的驱动器和符号链接。 没事儿多看看MSDN,就算不看MSDN也多看看智能提示...
      

  3.   

    DirectoryInfo的更简单...GetDirectories(String, SearchOption) 返回当前 DirectoryInfo 中与给定的搜索条件匹配并使用某个值确定是否在子目录中搜索的目录的数组。 
      

  4.   

        protected void Page_Load(object sender, EventArgs e)
        {
            BindForeach(Server.MapPath("a1"));
        }
        public void BindForeach(string path)
        {
            DirectoryInfo info = new DirectoryInfo(path);
            foreach (DirectoryInfo dir in info.GetDirectories())
            {
                Response.Write(dir.FullName + "<br/>");
                BindForeach(path + "/" + dir.Name);
            }
            foreach (FileInfo f in info.GetFiles())
            {
                Response.Write(f.Name + "<br/>");
            }
        }
      

  5.   


    #region 获取指定目录的所有文件
            /// <summary>
            /// 获取指定目录的所有文件
            /// </summary>
            /// <param name="dir"></param>
            /// <returns></returns>
            public static string[] ListFiles(string dir)
            {
                string[] files = Directory.GetFiles(dir);
                ArrayList result = new ArrayList();
                for (int i = 0; i < files.Length; i++)
                    result.Add(files[i]);
                return (string[])result.ToArray(typeof(string));
            }
            #endregion
            //
            #region 获取指定目录下的子目录
            /// <summary>
            /// 获取指定目录下的子目录
            /// </summary>
            /// <param name="dir"></param>
            /// <returns></returns>
            public static string[] ListDirectories(string dir)
            {
                string[] Directories = Directory.GetDirectories(dir);
                ArrayList result = new ArrayList();
                for (int i = 0; i < Directories.Length; i++)
                    result.Add(Directories[i].Replace(dir, ""));
                return (string[])result.ToArray(typeof(string));
            }
            #endregion
            //
            #region 遍历目录
            /// <summary>
            /// 遍历目录
            /// </summary>
            /// <param name="dir"></param>
            /// <returns></returns>
            public static string[] ListFolder(string FirstDir,string dir)
            {
                ArrayList result = new ArrayList();
                string[] files = ListFiles(dir);
                for (int i = 0; i < files.Length; i++)
                    result.Add(files[i].Replace(FirstDir, "").Replace("\\", "/"));
                //递归
                string[] Directories = ListDirectories(dir);
                string[] fileList;
                for (int i = 0; i < Directories.Length; i++)
                {
                    if (Directory.Exists(dir + Directories[i]))
                    {
                        fileList = ListFolder(FirstDir,dir + Directories[i]);
                        for (int j = 0; j < fileList.Length; j++)
                            result.Add(fileList[j].Replace(FirstDir, "").Replace("\\","/"));
                    }
                    else
                        continue;
                }
                return (string[])result.ToArray(typeof(string));
            }
            #endregion