C# 删除文件夹出错——目录不是空的

maozhu_yimi 2011-07-07 09:28:48
string catalog = Path.Combine(filePath, item);
Directory.Delete(catalog, true);

string catalog = Path.Combine(filePath, item);执行后:
Catalog = C:\Users\Administrator\Desktop\2011\002\0001\0011
Catalog文件夹下有四张图片。

Directory.Delete(catalog, true);执行后:
删除了最底层的\0011。然后出错:“目录不是空的”

备注:
不打开文件时不出错,打开Catalog目录,并执行上面代码,才出错。
...全文
2293 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxiju203 2011-07-07
  • 打赏
  • 举报
回复
直接暴力结束掉Explorer进程,删除操作结束之后再打开Explorer进程.
daifei4451 2011-07-07
  • 打赏
  • 举报
回复
在删除文件的时候 判断一下文件的状态
张云飞VIR 2011-07-07
  • 打赏
  • 举报
回复
因为目录或者目录下的文件正在被使用。需要先关闭这些才行。
chen870201 2011-07-07
  • 打赏
  • 举报
回复
估计目录权限有问题
叫我三三 2011-07-07
  • 打赏
  • 举报
回复
你可以看微软的OS
当你删除有打开文件夹的目录,
它会把那个打开的文件夹关闭 然后删除
maozhu_yimi 2011-07-07
  • 打赏
  • 举报
回复
估计要先判断文件夹是否被打开,如果打开了就自动关掉。
然后再执行删除操作。

我去试试
maozhu_yimi 2011-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kansousama 的回复:]

看2楼的回答我笑了
System.IO.Directory.Delete(@"C:\Temp", true);
第二个参数是递归删除
如果目录中有只读文件就删除不了
如果目录文件被使用也删除不冷
还是自己写一个递归的方法来删除
清除属性,杀死进程。
[/Quote]

递归的我写了,还是有这个问题。

当我打开最底层文件夹,执行删除操作时,是报错的。不打开文件夹时执行删除,是没问题的。
叫我三三 2011-07-07
  • 打赏
  • 举报
回复
看2楼的回答我笑了
System.IO.Directory.Delete(@"C:\Temp", true);
第二个参数是递归删除
如果目录中有只读文件就删除不了
如果目录文件被使用也删除不冷
还是自己写一个递归的方法来删除
清除属性,杀死进程。
garfieldzf 2011-07-07
  • 打赏
  • 举报
回复
Directory.Delete 方法删除是目录必须是空目录,给你报的错提示很正确,

你删除目录前先判断目录内是否包含文件, 有文件,先删文件。
isjoe 2011-07-07
  • 打赏
  • 举报
回复
先删除文件,再删除目录
chenwei9120 2011-07-07
  • 打赏
  • 举报
回复
先删文件和子文件夹,再删当前文件夹

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧