C#删除指定目录空文件夹(源码)

Posted Lete乐特

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#删除指定目录空文件夹(源码)相关的知识,希望对你有一定的参考价值。

Lete乐特自制删除指定目录空文件夹工具(C# - .NET Framework4.5)

卸载软件的时候有些软件只删除程序,并不删除文件夹 以前不会编程,网上找教程大部分都是bat文件的教程 (放到想要删除的目录下运行,但这只能删除这个目录下的空目录,不能删除这个目录下空目录的子目录) 为了方便自己就动手写了一个

Main.cs

 
   
   
 
  1. using System;

  2. using System.Collections.Generic;

  3. using System.ComponentModel;

  4. using System.Data;

  5. using System.Drawing;

  6. using System.IO;

  7. using System.Linq;

  8. using System.Text;

  9. using System.Threading.Tasks;

  10. using System.Windows.Forms;


  11. namespace Delete

  12. {

  13. public partial class Main : Form

  14. {

  15. public Main()

  16. {

  17. InitializeComponent();

  18. }


  19. // 浏览

  20. private void btnLL_Click(object sender, EventArgs e)

  21. {

  22. FolderBrowserDialog f = new FolderBrowserDialog();

  23. if (f.ShowDialog() == DialogResult.OK)

  24. {

  25. String DirPath = f.SelectedPath;

  26. this.txtPath.Text = DirPath;//G:\新建文件夹

  27. }

  28. }


  29. // 开始

  30. private void btnDelete_Click(object sender, EventArgs e)

  31. {

  32. // 获取路径

  33. string str = txtPath.Text;

  34. str.Replace("\\", "/");

  35. if (str.Equals(""))

  36. {

  37. MessageBox.Show("路径不能为空!", "提示");

  38. }

  39. else if (str.Equals("Q:\\") || str.Equals("W:\\") || str.Equals("E:\\") || str.Equals("R:\\") || str.Equals("T:\\") || str.Equals("Y:\\") || str.Equals("U:\\") || str.Equals("I:\\") || str.Equals("O:\\") || str.Equals("P:\\") || str.Equals("A:\\") || str.Equals("S:\\") || str.Equals("D:\\") || str.Equals("G:\\") || str.Equals("H:\\") || str.Equals("J:\\") || str.Equals("K:\\") || str.Equals("L:\\") || str.Equals("Z:\\") || str.Equals("X:\\") || str.Equals("C:\\") || str.Equals("C:\\") || str.Equals("V:\\") || str.Equals("B:\\") || str.Equals("N:\\") || str.Equals("M:\\"))

  40. {

  41. MessageBox.Show("路径不能为盘符!", "提示");

  42. }

  43. else

  44. {

  45. getPath(str);

  46. }

  47. }



  48. static List<string> list = new List<string>();//定义list变量

  49. public List<string> getPath(string path)

  50. {

  51. // 获取子目录

  52. DirectoryInfo dir = new DirectoryInfo(path);

  53. FileInfo[] fil = dir.GetFiles();

  54. DirectoryInfo[] dii = dir.GetDirectories();

  55. foreach (FileInfo f in fil)

  56. {

  57. list.Add(f.FullName);//添加文件的路径到列表

  58. }

  59. //获取子文件夹内的文件列表,递归遍历

  60. foreach (DirectoryInfo d in dii)

  61. {

  62. getPath(d.FullName);

  63. list.Add(d.FullName);//添加文件夹的路径到列表

  64. }


  65. // 删除空目录

  66. /// 删除掉空文件夹

  67. /// 所有没有子“文件系统”的都将被删除

  68. DirectoryInfo[] subdirs = dir.GetDirectories("*.*", SearchOption.AllDirectories);

  69. foreach (DirectoryInfo subdir in subdirs)

  70. {

  71. FileSystemInfo[] subFiles = subdir.GetFileSystemInfos();

  72. if (subFiles.Count() == 0)

  73. {

  74. subdir.Delete();

  75. }

  76. }


  77. return list;

  78. }




  79. // 文本框

  80. private void txtPath_Click(object sender, EventArgs e)

  81. {

  82. FolderBrowserDialog f = new FolderBrowserDialog();

  83. if (f.ShowDialog() == DialogResult.OK)

  84. {

  85. String DirPath = f.SelectedPath;

  86. this.txtPath.Text = DirPath;//G:\新建文件夹

  87. }

  88. }


  89. // 乐特 s' Blog

  90. private void lblLete_Click(object sender, EventArgs e)

  91. {

  92. System.Diagnostics.Process.Start("http://lete114.github.io/");

  93. }

  94. }

  95. }

Program.cs

 
   
   
 
  1. using System;

  2. using System.Collections.Generic;

  3. using System.Linq;

  4. using System.Threading.Tasks;

  5. using System.Windows.Forms;


  6. namespace Delete

  7. {

  8. static class Program

  9. {

  10. /// <summary>

  11. /// 应用程序的主入口点。

  12. /// </summary>

  13. [STAThread]

  14. static void Main()

  15. {

  16. Application.EnableVisualStyles();

  17. Application.SetCompatibleTextRenderingDefault(false);

  18. Application.Run(new Main());

  19. }

  20. }

  21. }


下载地址

这里顺便推荐个云盘 曲奇云盘https://quqi.com用了有几个月了还不错
同样和百度云一样送2T空间,晚了可能就没有了,关键是 不限速

曲奇云盘:https://quqi.gblhgk.com/s/47889/zZ9iap4ZScYMyf5p

Github:https://github.com/lete114/Delete.Tools

Gitee:https://github.com/lete114/Delete.Tools

以上是关于C#删除指定目录空文件夹(源码)的主要内容,如果未能解决你的问题,请参考以下文章

防止 Proguard 删除片段的空构造函数

C# 删除指定目录下全部文件

C# 删除指定目录下具有某后缀的全部文件

C# 删除指定目录下具有某后缀的全部文件

C# 监控指定目录的文件变化

怎么卸载源码编译安装的软件