1.利用下面的语句遍历所有目录
foreach (string file in Directory.GetFiles(path, "*.log", SearchOption.AllDirectories))
如果碰到拒绝访问的目录,程序会自动停止,出现一个错误。
如果用try的话应该怎么用?2.如果想搜索扩展名是.exe .bat 或.com的文件应该怎么做?3.这样搜索根目录的时候因为文件太多会导致程序死掉,应该怎么办?大家帮帮忙吧

解决方案 »

  1.   

    1,
      try
                {
                    foreach (string file in Directory.GetFiles(path, "*.log", SearchOption.AllDirectories))
                    {
                    }
                }
                catch (Exception e01)
                {
                    //有进程就要停止
                    //再抛错误
                    MessageBox.Show(e01.ToString());
                }2,foreach   (string   file   in   Directory.GetFiles(path,   "*.exe",   SearchOption.AllDirectories)) 3,foreach   (string   file   in   Directory.GetFiles(path,   "*.exe",   SearchOption.TopDirectoryOnly)) //只搜索本目录的,怕死机就用多线程。。哈哈,抢沙发拉~~!
      

  2.   

    1.
    如果这样try的话,碰到错误的东西就停止了,不会继续向下循环了
    具体怎么做才能让他跳过这个错误,继续循环呢?2.我的意思是.exe .bat或.com的文件都要,不是只要一个.exe哈多线程我还不会用,嘿嘿 谢谢楼上的啦
      

  3.   

    foreach (...)
    {
        try
        {
        }
        catch()
        {
        }
    }把错误处理放到foreach里。
      

  4.   

    foreach   (...) 

            try 
            { 
                   对每个文件的处理放此处。
            } 
            catch() 
            { 
            } 

      

  5.   

    foreach   (string   file   in   Directory.GetFiles(path,   "*.log",   SearchOption.AllDirectories)) 
    问题是出在 Directory.GetFiles()里,4,5楼朋友的方法不可以用啊看来只能写递归自己遍历了....
    那另外的两个问题呢?
      

  6.   

    foreach   (...) 

            try 
            { 
            } 
            catch() 
            {   有错误
            } 
            finaly
            {
             ....跳过错误,执行其他
            }

      

  7.   

    LZ问题解决没?
    我现在也是遇到这个问题
    准备枚举某一磁盘分区的所有文件,但是vista下有些文件拒绝访问,这时
    foreach (string strfilename in Directory.GetFiles(strPath))
    语句就会抛异常,getFiles还没完成就停止了
    而我又想列举出除了不允许访问的那几个文件外的其他文件
    如果有解决方法的话请告知一声,谢了