百分求助,文件夹是空的,删除时却提示我“目录不是空的”

MuteG 2010-05-10 03:34:20
有一个文件夹,它的父文件夹是一个Web虚拟目录,文件夹里只有一个文件。
有一个WebService,它的功能主要就是对这个文件夹进行操作,具体动作流程如下:
首先,客户端访问WebService,获得这个文件夹的网络路径。
然后,客户端从这个网络路径下载文件。
然后,WebService用Directory.Move将这个文件移动到其他地方,这时没有报错。
最后,WebService用Directory.Delete(文件夹路径, true)将这个文件夹删除,这时报错,“目录不是空的”。
这个问题发并不是每次都会出现,比如:连续对50个这种文件夹进行上述操作,可能只有1、2个出现这个错误,甚至不出现错误。WebService的并发连接数也就是5~10这个样子。
我就是想知道,这个错误是什么原因造成的?如何解决或者避免?
...全文
1567 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
timeloveboy 2011-11-01
  • 打赏
  • 举报
回复
我的问题和他完全一样。早上还好好的。让电脑睡眠了一会(VS2010没关)。然后就这样了。代码如下:
string save_path = Environment.SystemDirectory.Substring(0, 2) + @"Users\Administrator\Desktop\word文档转换txt\" + Word_text[0].textname.Substring(0, Word_text[0].textname.LastIndexOf('.'));


Directory.Delete(save_path);//这个地方出了错误。说 目录不是空的。
Directory.CreateDirectory(save_path); //结果很奇异,不管这段代码怎么运行,到桌面那个文件夹下硬是找不到。。

if (Directory.Exists(save_path))
{
//而且如果没有Delete语句,则会执行这的代码
foreach (Wordtext_textname one in Word_text)
File.WriteAllText(save_path + "\\" + one.textname.Substring(0, one.textname.LastIndexOf('.')) + ".txt", one.Wordtext, Encoding.Unicode);

MessageBox.Show(" 已保存在桌面 word文档转换txt 文件夹下");
}
else
{
//而且如果没有Delete语句,不会执行这里。。
MessageBox.Show(" 桌面 word文档转换txt 文件夹 创建失败");
}
Q1277516668 2010-08-04
  • 打赏
  • 举报
回复
你是不是通过mk命令建立的文件夹?
dylike 2010-05-11
  • 打赏
  • 举报
回复
先停止IIS再删
jietuan 2010-05-11
  • 打赏
  • 举报
回复
你重新启动IIS,电脑试试,或者清空临时文件夹。
dahaidao 2010-05-11
  • 打赏
  • 举报
回复
有点记不太清了,原来好像有个工具,可以查看文件被哪些程序使用。如果有这个工具,查到了使用它的程序,把它们先关了,或许就可以删除了。
dahaidao 2010-05-11
  • 打赏
  • 举报
回复
估计需要重新启动一下。
MuteG 2010-05-11
  • 打赏
  • 举报
回复
非常感谢大家的热心帮助,提供了这么多思路,我去试试看。
这两天应该就能确定修改方案,然后我根据最终的解决方案来结贴。
cuike519 2010-05-11
  • 打赏
  • 举报
回复
该文件夹句柄被其他应用程序正在使用。。。
wangwenzhuang 2010-05-11
  • 打赏
  • 举报
回复
应该是文件夹被独占了吧
honkerhero 2010-05-11
  • 打赏
  • 举报
回复
手动操作净出这事,大部分时候是毒,把你的文件夹某些属性改了


换个机器试试
zhoubupt 2010-05-11
  • 打赏
  • 举报
回复
学习学习
lon123 2010-05-11
  • 打赏
  • 举报
回复
系统I/O 速度太慢造成的吧?前一个炒作还没完成,就开始下一个了吧,
最好把代码贴出来,大家可以帮忙找找错
lzsh0622 2010-05-11
  • 打赏
  • 举报
回复

可能原因很多,试试:
停用“预读机制” REGSVR32 /U SHMEDIA.DLL
wuyq11 2010-05-10
  • 打赏
  • 举报
回复

文件夹是否在使用
线程
sunnj87 2010-05-10
  • 打赏
  • 举报
回复
重新定义一个Directory,
然后重新delete,不要用之前move的对象
用新定义的对象删除,试试
zhangyongtian_0810 2010-05-10
  • 打赏
  • 举报
回复
路过看两眼
beijingbeerman 2010-05-10
  • 打赏
  • 举报
回复
void delfile()
try
{
这里写删除文件。
}
catch
{
sleep(1000);
delfile();//递归回去再删。
}
}
MuteG 2010-05-10
  • 打赏
  • 举报
回复
非常非常感谢楼上各位的帮忙,我已经一一测试过了。
1、隐藏文件。
我已经试过,即使把文件设置成隐藏文件,照样可以删除掉文件夹,因为我用的是Directory.Delete(文件夹路径, true)这个方法。
2、文件占用。
文件占用情况下,确实无法删除,但是报出的异常信息是:“文件XXX正由另一进程使用,因此该进程无法访问该文件。”,因此应该不是这个原因造成的。
不知道有没有其他可能性??
黑哥 2010-05-10
  • 打赏
  • 举报
回复
非编程中....


一般我的电脑出现这样的问题...我都会用unlocker..或者改天再删。。


哈哈!
mark620 2010-05-10
  • 打赏
  • 举报
回复
显示隐藏文件设置一下。
加载更多回复(7)

110,533

社区成员

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

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

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