程序开发 > C# > 正文

C#批量删除文件和文件夹(包含指定和所有)

亮术网 2020-08-28 本网原创

根据删除的要求不同,有不同的删除方法。如果要删除某个文件夹中所有子文件夹和文件,则可以把此文件夹删除即可;如果要删除某个文件夹中指定的文件或者指定的文件夹,就得遍历循环删除。

下面针对不同的需求,分别给出不同的代码实例,以满足不同用户的多种需要,先从最简单的开始。

 

一、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);

本文浓缩标签:批量删除C#