在 C# 中删除一个目录中的所有文件

Muhammad Maisam Abbas 2023年1月30日 2021年4月29日
  1. 在 C# 中使用 DirectoryInfo.GetFiles() 方法删除目录中的所有文件
  2. 在 C# 中使用 DirectoryInfo.GetDirectories() 方法删除目录中的所有文件
  3. 使用 C# 中的 DirectoryInfo.EnumerateFiles() 方法删除目录中的所有文件
  4. 在 C# 中使用 DirectoryInfo.EnumerateDirectories() 方法删除目录中的所有目录
在 C# 中删除一个目录中的所有文件

本教程将讨论删除 C# 目录中所有文件的方法。

在 C# 中使用 DirectoryInfo.GetFiles() 方法删除目录中的所有文件

C# 中的 DirectoryInfo.GetFiles() 方法获取指定目录内的所有文件。DirectoryInfo.GetFiles() 方法将路径作为参数,并返回 FileInfo对象的数组,其中包含有关该目录中每个文件的信息。我们可以使用 DirectoryInfo.GetFiles() 方法获取指定目录内的所有文件,然后使用 FileInfo.Delete() 方法删除文件。以下代码示例向我们展示了如何使用 C# 中的 DirectoryInfo.GetFiles()FileInfo.Delete() 方法删除目录中的所有文件。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Delete_all_files
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Sample");
            FileInfo[] files = di.GetFiles();
            foreach (FileInfo file in files)
            {
                file.Delete();
            }
            Console.WriteLine("Files deleted successfully");
        }
    }
}

输出:

Files deleted successfully

在上面的代码中,我们使用 C# 中的 DirectoryInfo.GetFiles()FileInfo.Delete() 方法删除了路径 C:\Sample\中的所有文件。

在 C# 中使用 DirectoryInfo.GetDirectories() 方法删除目录中的所有文件

如果我们还想删除 C:\Sample\目录中的所有子目录,则可以使用 DirectoryInfo.GetDirectories() 方法来获取 C:\Sample\目录中的所有子目录。DirectoryInfo.GetDirectories() 方法返回 DirectoryInfo对象的数组,其中包含有关所有子目录的信息。我们可以使用 DirectoryInfo.Delete() 方法删除子目录。我们还可以通过在 DirectoryInfo.Delete() 方法的参数内指定 true 来删除每个子目录内的所有子目录。下面的代码示例向我们展示了如何使用 C# 中的 DirectoryInfo.GetDirectories() 方法删除目录中的所有文件和子目录。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Delete_all_files
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Sample");
            FileInfo[] files = di.GetFiles();
            foreach (FileInfo file in files)
            {
                file.Delete();
            }
            DirectoryInfo[] subDirectories = di.GetDirectories();
            foreach (DirectoryInfo subDirectory in subDirectories)
            {
                subDirectory.Delete(true);
            }
            Console.WriteLine("Files and Sub-directories deleted successfully");
        }
    }
}

输出:

Files and Sub-directories deleted successfully

在上面的代码中,我们使用 FileInfo.Delete()DirectoryInfo.Delete() 方法删除了 C:\Sample 目录内的所有文件和所有子目录。

使用 C# 中的 DirectoryInfo.EnumerateFiles() 方法删除目录中的所有文件

上一节中讨论的方法可以很好地完成工作,但是有一种更强大的方法可以完成相同的操作。DirectoryInfo.EnumerateFiles() 方法遍历目录内的每个文件。这种方法比以前的方法快得多。可以在 foreach 循环内使用 DirectoryInfo.EnumerateFiles() 方法,以在每次迭代中获取 FileInfo 类的对象。我们可以使用 FileInfo.Delete() 方法删除每个文件。以下代码示例向我们展示了如何使用 C# 中的 DirectoryInfo.EnumerateFiles() 方法删除目录中的所有文件。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Delete_all_files
{
    class Program
    {
        static void method2()
        {

        }
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Sample");
            foreach (FileInfo file in di.EnumerateFiles())
            {
                file.Delete();
            }
            foreach (DirectoryInfo subDirectory in di.EnumerateDirectories())
            {
                subDirectory.Delete(true);
            }
            Console.WriteLine("Files deleted successfully");
        }
    }
}

输出:

Files deleted successfully

上面的代码使用 C# 中的 DirectoryInfo.EnumerateFiles()FileInfo.Delete() 方法删除 C:\Sample 目录中的所有文件。

在 C# 中使用 DirectoryInfo.EnumerateDirectories() 方法删除目录中的所有目录

如果我们还想删除主目录中的所有子目录,则还可以在 C# 中使用 DirectoryInfo.EnumerateDirectories() 方法。DirectoryInfo.EnumerateDirectories() 方法用于遍历主目录中的每个子目录。可以在 foreach 循环内使用 DirectoryInfo.EnumerateDirectories() 方法,以在每次迭代中获取 DirectoryInfo 类的对象。我们可以使用 DirectoryInfo.Delete() 方法删除每个文件。如果要删除每个子目录中的所有子目录,也可以将 true 指定为 DirectoryInfo.Delete() 方法的参数。下面的代码示例向我们展示了如何使用 C# 中的 DirectoryInfo.EnumerateFiles() 方法删除目录中的所有文件和子目录。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Delete_all_files
{
    class Program
    {
        static void method2()
        {

        }
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Sample");
            foreach (FileInfo file in di.EnumerateFiles())
            {
                file.Delete();
            }
            foreach (DirectoryInfo subDirectory in di.EnumerateDirectories())
            {
                subDirectory.Delete(true);
            }
            foreach (DirectoryInfo subDirectory in di.EnumerateDirectories())
            {
                subDirectory.Delete(true);
            }
            Console.WriteLine("Files and sub-directories deleted successfully");
        }
    }
}

输出:

Files and sub-directories deleted successfully

我们使用 C# 中的 FileInfo.Delete()DirectoryInfo.Delete() 方法删除了 C:\Sample 目录内的所有文件和所有子目录。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - Csharp File

相关文章 - Csharp Directory