A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈君 金牌黑马   /  2014-8-16 17:46  /  1091 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

转自:http://www.jb51.net/article/37617.htm
本篇文章是对C#中如何删除文件目录或文件的解决方法进行了详细的分析介绍,需要的朋友参考下

  1. /// 删除文件和目录
  2. public class Cleaner

  3. {

  4. ///
  5. /// 删除指定目录以及该目录下所有文件
  6. ///
  7. /// 欲删除文件或者目录的路径

  8. public static void Clean ( string dir )

  9. {

  10. CleanFiles ( dir );//第一次删除文件

  11. CleanFiles ( dir );//第二次删除目录

  12. }


  13. private static void CleanFiles( string dir)

  14. {

  15. if ( !Directory.Exists ( dir ) ) 

  16. {
  17. File.Delete ( dir );
  18. return;

  19. }

  20. else
  21. 
 {
  22. 
 string[] dirs = Directory.GetDirectories ( dir );
  23. 
 string[] files = Directory.GetFiles ( dir );
  24. 

 if ( 0 != dirs.Length )
  25. 
 {
  26. 
 foreach ( string subDir in dirs )
  27. 
 {
  28. 
 if ( null == Directory.GetFiles( subDir ) )
  29. 
 {
  30. Directory.Delete( subDir );
  31. 
 return;
  32. 
 }
  33. 
 else CleanFiles ( subDir );
  34. 
 }
  35. 
 }
  36. 
 if ( 0 != files.Length )
  37. {
  38. 
 foreach ( string file in files )
  39. 
 {
  40. 
 File.Delete ( file );
  41. }
  42. 
 }
  43. 
 else Directory.Delete( dir );
  44. 
 }
  45. 
 }
  46. }
复制代码

使用方法,一句话.Directory.Delete( path, true)
以上有人可能认为很烦,没有意义,保必用递归呢.几句代码就可以了.
但我想说,使用递归的好处就是,可以,在里面做判断,比如你只想删除其中的部分条件文件,你可以这样改一下..比如你只想删除名字等到.aaa.txt的.完全可以,

  1. foreach ( string subDir in dirs )
  2. 
 {
  3. 
 if ( null == Directory.GetFiles( subDir ) && subDir == "aaa.txt")
  4. 
 {
  5. Directory.Delete( subDir );
  6. 
 return;
  7. 
 }
  8. 
 else CleanFiles ( subDir );
  9. 
 }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马