遍历目录并搜索.JPG文件

时间:2010-10-15 15:52:47

标签: c# asp.net directory

我有这个代码,我得到一个IOException,无法弄清问题是什么。 我正在尝试遍历目录中的子目录并列出所有.JPG文件。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) 
        {
            Session["AllEmpsLoadPath"] = "\\\\intranet.org\\Photo Album\\Employees";

        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        DirSearch((string)Session["AllEmpsLoadPath"]);

    }

 void DirSearch(string sDir) 
 {

                foreach (string d in Directory.GetDirectories(sDir)) 
                {

                    //I get an IOException here on the first iteration
                    //saying "There are no more files" and f is null
                    //even though there are subdirectories 
                        foreach (string f in Directory.GetFiles(d, "*.JPG"))
                        {
                            BulletedList1.Items.Add(f);
                        }

                    DirSearch(d);
                }

  }

2 个答案:

答案 0 :(得分:4)

对于第二个答案感到抱歉,但我认为我发现了一个逻辑错误......

我假设你想在每次迭代中搜索当前文件夹中的文件,然后获取子目录,然后将它们传递回函数(顺便使用递归)并重复,直到没有更多的子目录。

您编码的方式,该函数在当前目录的子目录中查找文件,然后递归调用子文件夹的函数。这意味着在最低级别,没有子文件夹,你会在那里得到一个错误。但是,它没有解释为什么第一个文件夹上发生错误。

尝试更改此

void DirSearch(string sDir)  
 { 

            foreach (string d in Directory.GetDirectories(sDir))  
            { 

                //I get an IOException here on the first iteration 
                //saying "There are no more files" and f is null 
                //even though there are subdirectories  
                    foreach (string f in Directory.GetFiles(d, "*.JPG")) 
                    { 
                        BulletedList1.Items.Add(f); 
                    } 

                DirSearch(d); 
            } 
} 

到这个

void DirSearch(string sDir)  
 { 
      foreach (string f in Directory.GetFiles(sDir, "*.JPG")) 
                        { 
                            BulletedList1.Items.Add(f); 
                        } 



                foreach (string d in Directory.GetDirectories(sDir))  
                { 

                    //I get an IOException here on the first iteration 
                    //saying "There are no more files" and f is null 
                    //even though there are subdirectories  
                                 DirSearch(d); 
                } 

  } 

答案 1 :(得分:3)

您很可能需要更正权限问题。在普通的ASP.NET用户帐户下运行,访问UNC共享时,这一点尤其困难。

This Microsoft article显示了一种可能的解决方案。

就个人而言,我会在代码中映射驱动器。我以前在这里发布了代码。如果我能找到它,我会给你一个链接。

修改

这里是:Asp.net Access To Network Share