obsidian/笔记文件/2.笔记/清空文件夹.md
2025-03-26 00:02:56 +08:00

2.4 KiB
Raw Permalink Blame History

#unity/日常积累

在C#中清空一个文件夹即删除文件夹中的所有文件和子文件夹是一个比较常见的操作。这可以通过递归删除文件夹中的每个文件和子文件夹来实现。下面是一个示例代码展示了如何使用C#来清空一个指定的文件夹:

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        string folderPath = @"C:\Path\To\Your\Folder"; // 指定要清空的文件夹路径

        try
        {
            DeleteDirectoryContents(folderPath);
            Console.WriteLine("文件夹已清空。");
        }
        catch (Exception ex)
        {
            Console.WriteLine("发生错误: " + ex.Message);
        }
    }

    static void DeleteDirectoryContents(string targetDir)
    {
        // 检查目标目录是否存在
        if (Directory.Exists(targetDir))
        {
            // 获取该目录中所有的文件
            string[] files = Directory.GetFiles(targetDir);
            // 获取该目录中所有的子目录
            string[] dirs = Directory.GetDirectories(targetDir);

            // 删除所有文件
            foreach (string file in files)
            {
                File.SetAttributes(file, FileAttributes.Normal); // 取消只读属性
                File.Delete(file);
            }

            // 递归删除所有子目录
            foreach (string dir in dirs)
            {
                DeleteDirectoryContents(dir); // 递归调用
                Directory.Delete(dir, false); // 删除空目录
            }
        }
        else
        {
            Console.WriteLine("目录不存在: " + targetDir);
        }
    }
}

这段代码定义了一个名为DeleteDirectoryContents的方法,它接受一个字符串参数targetDir,表示要清空的目标文件夹的路径。该方法首先检查目标文件夹是否存在,如果存在,则获取该文件夹中所有的文件和子文件夹列表。然后,它遍历这些文件和子文件夹,删除每个文件,并对每个子文件夹递归调用自身来删除其内容。最后,删除空的子文件夹。

请注意,使用这段代码时需要确保你有足够的权限来删除目标文件夹中的内容,否则可能会抛出异常。另外,请小心使用这段代码,确保你确实想要删除目标文件夹中的所有内容,因为删除操作是不可逆的。