【发布时间】:2013-08-04 21:11:00
【问题描述】:
我有以下创建文件夹的 C# 代码:
if (!Directory.Exists(strCreatePath))
{
Directory.CreateDirectory(strCreatePath);
}
它可以工作,除非我有这样的文件夹:C:\\Users\\UserName\\Desktop Directory.Exists 返回 false,这是不正确的,但随后 Directory.CreateDirectory 抛出异常:Access to the path 'C:\\Users\\UserName\\Desktop' is denied.。
除了捕获这种我更愿意避免的异常之外,知道如何防止这种情况发生吗?
【问题讨论】:
-
存在和写权限是两个不同的东西。
-
您可以单独使用
Directory.CreateDirectory来检查字典是否存在。然后你也避免了竞争条件。 -
是
UserName您登录时使用的用户名或其他用户帐户,您和管理员以及您的应用程序是否以管理员权限运行? -
@TimSchmelter:
Directory.CreateDirectory将引发access denied异常,这就是我试图避免的。 -
@c00000fd - 无论如何你都可能得到这个异常。即使您确实事先检查了权限,它仍然可能在您检查和尝试访问它之间发生变化。如果可能,您需要处理此异常。