C#批量删除文件和文件夹(包含指定和所有)
根据删除的要求不同,有不同的删除方法。如果要删除某个文件夹中所有子文件夹和文件,则可以把此文件夹删除即可;如果要删除某个文件夹中指定的文件或者指定的文件夹,就得遍历循环删除。
下面针对不同的需求,分别给出不同的代码实例,以满足不同用户的多种需要,先从最简单的开始。
一、C# 如果文件存在,则删除
1、物理路径
public void DeleteFileIfExists(string path)
  {
    if (File.Exists(path))
      File.Delete(path);
  }
调用:DeleteFileIfExists(@"F:\temp\test.txt");
2、虚拟路径
public void DeleteFileIfExistsVirtualPath(string path)
  {
    path = Server.MapPath(path);//把虚拟路径转为物理路径
    if (File.Exists(path))
      File.Delete(path);
  }
调用:DeleteFileIfExistsVirtualPath("/htm/test.html");
二、C#批量删除某一文件夹中的所有文件和子文件夹
/// <summary>
  /// C#删除文件夹中的所有文件和子文件夹
  /// </summary>
  /// <param name="dirPath">待删除文件夹路径</param>
  /// <returns>删除返回真,否则返回假</returns> 
  private bool DelForlder(string dirPath)
  {
    if (Directory.Exists(dirPath))
    {
      DirectoryInfo di = new DirectoryInfo(dirPath);
      di.Delete(true);//true删除子目录和文件
      return true;
    }
    return false;
  }
调用方法:DelForlder(@"E:\files\test");
三、C#批量删除某一文件夹中的所有文件
/// <summary>
  /// C#批量删除某一文件夹中的所有文件
  /// </summary>
  /// <param name="dirPath">待删除文件夹路径</param>
  /// <returns>删除所有文件返回真,否则返回假</returns> 
  private bool DelFiles(string dirPath)
  {
    DirectoryInfo di = new DirectoryInfo(dirPath);
    FileInfo[] arrFi = di.GetFiles("*.*");
    try
    {
      foreach (FileInfo fi in arrFi)
      {
        File.Delete(di + "\\" + fi.Name);
      }
      returntrue;
    }
    catch
    {
      return false;
    }
  }
调用方法:DelFiles(@"E:\files\test");
四、C#批量删除某一文件夹中的所有子文件夹
/// <summary>
  /// C#批量删除某一文件夹中的所有子文件夹
  /// </summary>
  /// <param name="dirPath">待删除文件夹路径</param>
  /// <returns>删除所有文件夹返回真,否则返回假</returns> 
  private bool DelFolders(string dirPath)
  {
    DirectoryInfo di = new DirectoryInfo(dirPath);
    DirectoryInfo[] arrDi = di.GetDirectories();
    try
    {
      foreach (DirectoryInfo dirInfo in arrDi)
      {
        Directory.Delete(di + "\\" + dirInfo.ToString(), true);
      }
      return true;
    }
    catch
    {
      return false;
    }
  }
调用方法:DelFolders(@"G:\files\test");
五、C#批量删除文件夹中指定文件
/// <summary>
  /// C#批量删除文件夹中指定文件
  /// </summary>
  /// <param name="dirPath">待删除文件夹路径</param>
  /// <param name="files">待删除文件数组</param>
  /// <returns>删除所有指定文件返回真,否则返回假</returns> 
  private bool DelAppointFiles(string dirPath, string[] files)
  {
    DirectoryInfo di = new DirectoryInfo(dirPath);
    FileInfo[] arrFi = di.GetFiles("*.*");
    try
    {
      foreach (FileInfo fi in arrFi)
      {
        foreach (string s in files)
        {
          if(fi.Name.Equals(s))
          File.Delete(di + "\\" + fi.Name);
        }
      }
      return true;
    }
    catch
    {
       return false;
    }
  }
调用方法:
string[] arr = { "test.txt1", "test.txt2" };
DelAppointFiles(@"E:\files\test", arr);
