前言:这几天做了一个项目,用npoi导出项目的内容,而每次导出都要清空服务器上原有的内容,然后就用微软自带的方法
Directory.Delete("path", true);,但是这个方法只能删除空目录,所以总抛异常,无奈之下,只好先删掉文件中的全部文件再调用这个方法,还是报错“
目录不是空的”,好郁闷,文件夹中有空文件夹都不能删除,关键是这个异常一会抛,一会不抛,让人很头疼。干脆自己写了一个递归删除的算法。代码如下:
后记:也不知道是哪位计算机天才想出来递归这种调用自己本身的算法,太牛了,真的。简直就是疯子,《天才在左疯子在右》。
C# Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/// 删除目录下的所有文件包括子文件夹及其中的文件
private string DelAll( string path) { try { string [] child = Directory.GetDirectories(path); if (child.Length > 0 ) { //删除该目录下的所有文件夹 for ( int i = 0 ; i < child.Length; i++) { //如果该目录下还有目录,则再往下寻找 if (Directory.GetDirectories(child[i]).Length > 0 ) { DelAll(child[i]); Directory.Delete(child[i], true ); //重要!!!删除完子目录以后返回来要删除父目录 } else //该目录下已经没有目录了,删除所有文件,然后删除该目录。 { string [] files = Directory.GetFiles(child[i]); for ( int j = 0 ; j < files.Length; j++) { File.Delete(files[j]); } Directory.Delete(child[i], true ); } } } //删除该目录下的所有文件 string [] file = Directory.GetFiles(path); for ( int j = 0 ; j < file.Length; j++) { File.Delete(file[j]); } return "true" ; } catch (Exception ex) { return "false:" + ex.Message; } } |