下面的方法只能输出一级目录下的所有文件,请问如何遍历所有目录下的文件,谢谢
string[] FileNames = Directory.GetFiles(this.Server.MapPath(@"car\"));
if(FileNames.Length > 0)
{
for(int i=0;i<FileNames.Length;i++)
{
string[] files = FileNames[i].Trim().Split('\\');
string filesname = files[files.Length-1].Trim();
this.Response.Write(filesname +"<br/>");
}}

解决方案 »

  1.   

    递归调用你这个方法不就可以了么????
    里面还应该加上Directory.GetDirectories得到目录
      

  2.   

    可以用递归调用实现private void GetFiles(string path)
    {
        //获取当前目录下的所有文件并显示
        string[] files=System.IO.Directory.GetFiles(path);
        foreach(string s in files)
        {
             Response.Write(s+"<br>");
        }
        //获取当前目录下的所有子目录并进新递归调用
        string[] dir=System.IO.Directory.GetDirectories(path);
        foreach(string s in dir)
        {
             this.GetFiles(s);
        }
    }
      

  3.   

    private void getfiles(string path)
    {
    string[] fileNames = Directory.GetFiles(path);
    string[] directories = Directory.GetDirectories(path);
    foreach (string file in fileNames)
    {
    Console.WriteLine("Filename:{0}",file);
    }
    foreach (string dir in directories)
    {
    Console.WriteLine("Directoriesname:{0}",dir);
    getfiles(dir);
    }
    }
      

  4.   

    lovefootball(蟑螂) 的方法可以^_^
     private void Button2_Click(object sender, System.EventArgs e)
            {
               
                getfiles(@"F:\GetPageHtml\");        }
            private void getfiles(string path)
            {
                string[] fileNames = Directory.GetFiles(path);
                string[] directories = Directory.GetDirectories(path);
                foreach (string file in fileNames)
                {
                    Response.Write("Filename="+file+"<br>");
                }
                foreach (string dir in directories)
                {
                     Response.Write("Directoriesname="+dir);
                    getfiles(dir);
                }
            }
      

  5.   

    请问 lovefootball(蟑螂) 
    如何遍历出所有文件夹中只含有test.xml这个文件的路径信息,谢谢
      

  6.   

    这样搞可以,不知道是不是效率怎么样^_^
    if(file.Remove(0,file.LastIndexOf(@"\")).Replace(@"\","")=="test.xml")                
        Response.Write(file+"<br>");
      

  7.   

    这样搞可以,不知道效率好不好^_^if(file.Remove(0,file.LastIndexOf(@"\")).Replace(@"\","")=="test.xml")   Response.Write(file+"<br>");
      

  8.   

    private string getfiles(string path)
    {
    if( Directory.GetFiles(path,@"test.xml").Length>0)
                    return path;
    string[] directories = Directory.GetDirectories(path);
    foreach (string dir in directories)
    {
    string tpath =getfiles(dir);
                      if(tpath != String.Empty) return tpath;
    }
             return String.Empty;
    }
      

  9.   

    看看这个道理是一样的:
    foreach(string directname in Directory.GetDirectories(Server.MapPath(".")))
    {
    DataTable dt=new DataTable();
    DataTable dt2=new DataTable();
    dt.Columns.Add(new DataColumn("name",typeof(String)));
    dt2.Columns.Add(new DataColumn("name",typeof(String)));
    string name;
    int start;
    int start2;
    start=directname.LastIndexOf("\\");
    name=directname.Substring(start+1,directname.Length-start-1);
    if(name=="photo")
    {
    s_photo=Directory.GetFiles(Server.MapPath(".")+"\\photo");
    for(int i=0;i<s_photo.Length;i++)
    {
    DataRow dr=dt.NewRow();
    start2=s_photo[i].LastIndexOf("\\");
    s_photo[i]=s_photo[i].Substring(start2+1,s_photo[i].Length-start2-1);
    dr["name"]=s_photo[i].ToString();
    dt.Rows.Add(dr);
    }
    this.DataGrid2.DataKeyField="name";
    this.DataGrid2.DataSource=dt;
    this.DataGrid2.DataBind();

    }
    if(name=="url")
    {
    s_url=Directory.GetFiles(Server.MapPath(".")+"\\url");
    for(int i=0;i<s_url.Length;i++)
    {
    DataRow dr2=dt2.NewRow();
    start2=s_url[i].LastIndexOf("\\");
    string s=s_url[i].Substring(start2+1,s_url[i].Length-start2-1);
    s_url[i]=s;
    dr2["name"]=s_url[i].ToString();
    dt2.Rows.Add(dr2);
    }
    this.DataGrid3.DataKeyField="name";
    this.DataGrid3.DataSource=dt2;
    this.DataGrid3.DataBind();
    }

    }