想用递归查看c:\\下面所有文件
代码如下,可是每次查得到一半就报错说c:\\System Volume Information这个文件不让访问?
郁闷死了,高手进指点 ListFiles(new DirectoryInfo("d:\\"));
this.label4.Text = Convert.ToString(m);
//
} public void ListFiles( FileSystemInfo fileinfo ) 
   

   
if( ! fileinfo.Exists ) return; 
   
DirectoryInfo dirinfo = fileinfo as DirectoryInfo; 
   
if( dirinfo == null ) return; //不是目录 
    
FileSystemInfo [] files = dirinfo.GetFileSystemInfos(); 
   
   for( int i=0; i<files.Length ;i++)//遍历目录下所有文件、子目录 
      {  FileInfo file = files[i] as FileInfo;  if( file != null ) // 是文件  { 
//Thread.Sleep(30);
                this.statusBar1.Text =file.Name;
m+=1;
}     else //是目录 
   { 
     ListFiles( files[i] ); //对子目录进行递归调用 
    }      } }

解决方案 »

  1.   

    private void directory(DirectoryInfo di)
    {
    foreach(FileSystemInfo fi in di.GetFileSystemInfos())
    {
    if(fi.Extension!="")
    {
    //这里没有对fi是文件夹还是文件进行检测,小心出错.
    FileInfo ff = (FileInfo)fi;
    switch(fi.Extension.ToLower())
    {
    case ".mdb":
    database.Text = database.Text+"文件名:"+ff.Name+"&nbsp;&nbsp;大小:"+changestr(ff.Length.ToString("n"))+"<br>";
    data++;
    datalen = datalen+ff.Length;
    break;
    case ".jpg":
    image++;
    imagelen = imagelen+ff.Length;
    break;
    case ".gif":
    image++;
    imagelen = imagelen+ff.Length;
    break;
    case ".xlsfile":
    grade++;
    gradelen = gradelen+ff.Length;
    break;
    default:
    break;
    }
    sys++;
    systemlen = systemlen+ff.Length;
    }
    else
    {
    directory((DirectoryInfo)fi);
    }
    }
    }
    //说明一下,这是我写的一个函数,不过是在asp.net里调用的.用的是C#语法.原理是一样的.给你当参考.
      

  2.   

    http://blog.csdn.net/zhzuo/archive/2005/03/08/315125.aspx