C#删除文件夹里的所有文件的实现方案 一、 基础方案删除文件夹内所有文件保留子文件夹适用于仅删除目标文件夹下直接存放的文件不删除子文件夹及其内部文件的场景核心使用System.IO命名空间的 API。核心 API 说明Directory.GetFiles(string path)获取指定文件夹下所有直接文件的完整路径返回string[]数组。File.Delete(string filePath)删除单个指定文件需处理文件占用等异常。实现代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061usingSystem;usingSystem.IO;namespaceDeleteFolderFiles{classBasicDelete{/// summary/// 删除指定文件夹内所有直接文件保留子文件夹/// /summary/// param namefolderPath目标文件夹路径/parampublicstaticvoidDeleteAllFilesInFolder(stringfolderPath){// 1. 验证文件夹是否存在避免路径错误if(!Directory.Exists(folderPath)){Console.WriteLine($错误文件夹 {folderPath} 不存在);return;}try{// 2. 获取文件夹内所有直接文件的路径string[] allFiles Directory.GetFiles(folderPath);// 3. 遍历并删除每个文件foreach(stringfilePathinallFiles){// 确保文件存在避免并发场景下文件已被删除if(File.Exists(filePath)){File.Delete(filePath);Console.WriteLine($成功删除文件{filePath});}}Console.WriteLine(所有文件删除完成);}catch(UnauthorizedAccessException ex){Console.WriteLine($错误没有权限删除文件 - {ex.Message});}catch(IOException ex){Console.WriteLine($错误文件被占用或无法删除 - {ex.Message});}catch(Exception ex){Console.WriteLine($未知错误{ex.Message});}}// 调用示例staticvoidMain(string[] args){// 目标文件夹路径可改为绝对路径如 D:\TestFolderstringtargetFolder TestFolder;DeleteAllFilesInFolder(targetFolder);}}}二、 进阶方案 1删除文件夹内所有文件包含子文件夹文件适用于需要递归删除目标文件夹下所有文件含子文件夹内文件仅保留文件夹结构不删除任何文件夹的场景。核心 API 说明Directory.GetFiles(string path, string searchPattern, SearchOption searchOption)searchPattern文件筛选模式*.*匹配所有文件。SearchOption.AllDirectories递归搜索所有子目录TopDirectoryOnly仅搜索当前目录对应基础方案。实现代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364usingSystem;usingSystem.IO;namespaceDeleteFolderFiles{classRecursiveDeleteFiles{/// summary/// 递归删除文件夹内所有文件包含子文件夹文件保留文件夹结构/// /summary/// param namefolderPath目标文件夹路径/parampublicstaticvoidDeleteAllFilesRecursively(stringfolderPath){if(!Directory.Exists(folderPath)){Console.WriteLine($错误文件夹 {folderPath} 不存在);return;}try{// 递归获取所有文件当前目录所有子目录string[] allFiles Directory.GetFiles(folderPath,*.*,SearchOption.AllDirectories);// 批量删除foreach(stringfilePathinallFiles){if(File.Exists(filePath)){// 可选设置文件为正常属性避免只读文件无法删除File.SetAttributes(filePath, FileAttributes.Normal);File.Delete(filePath);Console.WriteLine($成功删除文件{filePath});}}Console.WriteLine(所有文件含子文件夹文件删除完成);}catch(UnauthorizedAccessException ex){Console.WriteLine($权限错误{ex.Message});}catch(IOException ex){Console.WriteLine($文件占用错误{ex.Message});}catch(Exception ex){Console.WriteLine($未知错误{ex.Message});}}// 调用示例staticvoidMain(string[] args){stringtargetFolder D:\TestFolder;DeleteAllFilesRecursively(targetFolder);}}}三、 进阶方案 2删除文件夹含所有文件 子文件夹 重建空文件夹适用于需要彻底清空文件夹删除所有文件和子文件夹最终保留一个空的目标文件夹的场景比递归删除文件更高效。核心 API 说明Directory.Delete(string path, bool recursive)recursive: true递归删除目标文件夹及其所有子文件夹、文件。recursive: false仅删除空的目标文件夹。Directory.CreateDirectory(string path)创建文件夹若文件夹已存在不会抛出异常直接返回现有文件夹信息。实现代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748usingSystem;usingSystem.IO;namespaceDeleteFolderFiles{classDeleteAndRecreateFolder{/// summary/// 彻底清空文件夹删除文件子文件夹重建空文件夹/// /summary/// param namefolderPath目标文件夹路径/parampublicstaticvoidClearFolderCompletely(stringfolderPath){try{// 1. 若文件夹存在递归删除含所有文件和子文件夹if(Directory.Exists(folderPath)){Directory.Delete(folderPath,true);Console.WriteLine($已删除文件夹{folderPath});}// 2. 重建空文件夹Directory.CreateDirectory(folderPath);Console.WriteLine($已重建空文件夹{folderPath});}catch(UnauthorizedAccessException ex){Console.WriteLine($权限错误无法删除/创建文件夹 - {ex.Message});}catch(IOException ex){Console.WriteLine($IO错误文件夹被占用 - {ex.Message});}catch(Exception ex){Console.WriteLine($未知错误{ex.Message});}}// 调用示例staticvoidMain(string[] args){stringtargetFolder D:\TestFolder;ClearFolderCompletely(targetFolder);}}}四、 关键注意事项避坑指南路径格式C# 中文件夹路径推荐使用Verbatim 字符串如D:\TestFolder避免转义字符\冲突。支持相对路径如TestFolder和绝对路径如D:\TestFolder相对路径对应程序运行目录。异常处理必须捕获UnauthorizedAccessException权限不足和IOException文件 / 文件夹被占用、只读文件等。避免因单个文件删除失败导致整个批量操作中断可在循环内添加try-catch单独处理单个文件。只读文件处理若文件为「只读属性」直接调用File.Delete会抛出异常需先通过File.SetAttributes(filePath, FileAttributes.Normal)重置文件属性。并发安全若存在多线程 / 多进程操作同一文件夹需先通过File.Exists(filePath)验证文件是否存在避免删除已被其他进程删除的文件。谨慎操作删除操作不可逆建议在正式删除前添加日志输出或备份逻辑避免误删重要文件。切勿操作系统关键文件夹如C:\Windows可能导致系统异常。总结仅删当前文件夹文件保留子文件夹使用Directory.GetFiles(folderPath) 遍历File.Delete。删所有文件含子文件夹文件保留文件夹结构使用Directory.GetFiles(..., SearchOption.AllDirectories) 递归删除。彻底清空文件夹重建空文件夹使用Directory.Delete(folderPath, true)Directory.CreateDirectory(folderPath)效率最高。安全要点添加异常处理、验证路径存在、处理只读文件、避免误删系统文件。