【发布时间】:2014-10-08 08:18:52
【问题描述】:
标准的 .NET Directory.CreateDirectory(string path) 方法创建一个目录(包括父目录,如果需要),如果它们不存在,并为创建的目录返回一个 DirectoryInfo 对象。
如果该目录已经存在,它会为已经存在的目录返回一个 DirectoryInfo 对象。
我需要一个方法来创建一个目录,如果它不存在,但会失败 - 返回错误或抛出异常 - 如果目录已经存在。
不,Directory.Exists(string path) 不会提供服务。我需要一些原子的东西。我正在与 C++ 应用程序交互,这些应用程序旨在将某些目录的存在或不存在作为锁定,并且执行 DirectoryExists() 后跟 Directory.CreateDirectory() 会留下一个可以踩到的窗口。
在文件系统级别,创建目录是一个原子操作。如果两个进程都尝试它,那么只有一个会成功。 C++ 程序可用的 API 反映了这一点。 .NET 中的标准 API 隐藏了这一点。是否有一些较低级别的 API 可用但不可用?
【问题讨论】: