啊。。
我也遇到一样的问题。提示Exception信息是“目录非空”。
MSDN上的函数Directory.Delete(path,true)
提示此信息的说明只有两种情况:
1.后一个参数为false(我已经写为true了,排除)
2.存在具有相同名称且位置由 path 指定的文件。(显然Exception信息是不对的:<)
对于第二种情况,做了个简单的控制台程序的测试下
try{
System.IO.Directory.Delete(@'F:\test',true);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
Consloe.ReadLine();
}F:\test里面是一些不同的文件夹1,2,3,4,5都含有相同的文件名A.dat
执行程序。
产生上述“目录非空”的信息
再执行一次(备份F:\test),异常又没有了,隔一段时间再执行,又出现异常
无语了
莫不是微软的问题?
各位大侠们有空一起研究一下?指教,在线恭候。

解决方案 »

  1.   


    我也是这么怀疑的,msdn上是说Directory.delete这个静态类方法操作时会进行安全性检查,但我今天又换了DirectoryInfo.delete(true)试了下,发现也不行。也会出同样的错。ps:我是这么试验的,在Directory.delete(path,true)那打断点,然后在要删除的目录下拷贝其中一个文件夹,多拷几次,然后再运行,就出错了,不知道这样有没有关系的。
    因为我这样操作,是必错的,而自己写的像楼上那样单独作的小程序,是有可能错,也有可能对。非常不确定。艾,真奇怪阿!
      

  2.   

    有没有牛人来讲下Directory.delete是怎么删的阿,怎么会出这样的错阿??莫非是bug????
      

  3.   

    我也遇到过类似情况,经查证是由于在程序中打开了该文件夹下的文件未关闭所致,这里的异常信息不准确引起了很多困扰。检查一下程序中是否打开过该文件夹下的文件未关闭的情况,如用filestream打开的,未使用using或者dispose
      

  4.   

    同意9楼
    我测试了一下
    directory.delete(@"D:\test",true)是没有问题的,前提是这个目录下的任何一个文件夹或者文件在被程序调用后要释放,然后再删除就没有问题,该目录下有多个子目录和多个文件