The Memory of Tree

Kevin's Words

导航

统计

公告

C# 删除文件的简单与复杂

因为开发项目里有这个要求,就憋了半个多小时写了这个类,因为是第一次使用C#开发,有许多地方还不明白。

更正:其实这部分代码用一个语句就能完成:Directory.Delete( path, true)
但是当时没有仔细看,就写了这个算法。希望大家不要犯我这种毛病
源代码如下:
 
/// <summary>
 /// 删除文件和目录
 /// </summary>
 
public class Cleaner
 
{
 
  /// <summary>
  /// 删除指定目录以及该目录下所有文件
  /// </summary>
  /// <param name="dir">欲删除文件或者目录的路径</param>
  
  public static void Clean ( string dir )
 
 {
   
      CleanFiles ( dir );//第一次删除文件
   
      CleanFiles ( dir );//第二次删除目录
  
  }

 
 private static void CleanFiles( string dir)
 
 {
  
      if ( !Directory.Exists ( dir ) ) 
   
     {
         File.Delete ( dir );
         return;
   
     }
   
     else

   {

     string[] dirs = Directory.GetDirectories ( dir );
 
    string[] files = Directory.GetFiles ( dir );


  if ( 0 != dirs.Length )
    
    {
      
     foreach ( string subDir in dirs )
        
     {
          
      if ( null == Directory.GetFiles( subDir ) )
           
      {
                        Directory.Delete( subDir ); 
               
       return;
           
      }
           
      else CleanFiles ( subDir );
       
     }
    
    }
  
    if ( 0 != files.Length )
         {
    
     foreach ( string file in files )
     
     {
      
      File.Delete ( file );
              }
   
    }
   
    else Directory.Delete( dir );
  
   }

  }
 }

posted on 2006-07-20 12:58 Kevin Xin 阅读(4469) 评论(1) 编辑 收藏