【发布时间】:2015-11-22 07:51:59
【问题描述】:
我在路径C:\Users\MYUSER\Desktop\TEST\ 上创建了一个文件夹。
我有以下代码:
private const string DIR = @"C:\Users\MYUSER\Desktop\TEST\tmp";
static void Main(string[] args)
{
if (Directory.Exists(DIR))
Directory.Delete(DIR);
for (int i = 0; i < 100; i++)
{
var dinfo = Directory.CreateDirectory(DIR);
Directory.Delete(DIR);
}
Directory.CreateDirectory(DIR);
}
当我执行代码时,大多数情况下它运行正常,我可以看到文件夹TEST 中有一个文件夹 tmp。
我的问题是,在其他时候,Directory.CreateDirectory(DIR) 根本不创建目录。我什至检查了它返回的DirectoryInfo,它的Exists 属性是false,而Directory.CreateDirectory(DIR) 将不起作用,因为该文件夹不存在。这种奇怪的行为有什么解释吗?
【问题讨论】:
-
在 NTFS 上,您必须拥有这样做的权限。
-
这种代码有真正的原因还是只是为了测试?
-
您确定没有遇到异常吗?目录是空的吗?
-
目录是否在另一个程序中打开,例如Windows 资源管理器?
-
我认为目录必须为空才能使 Directory.Delete 工作。但问题可能是在调用 CreateDirectory 行之前 Windows 尚未完成删除 DIR 目录。所以你需要以某种方式等待它完成。有很多方法可以做到这一点,但为了简单起见,在 Create 和 Delete 之间放置一个 Thread.Sleep ,我敢打赌它每次都有效。