3

给定一个文件的路径,我想创建这个文件,以及指向它的目录字符串(如果它们不存在);但我不希望我的程序的任何其他实例能够看到没有文件的基本目录。

基本上,我想一次原子地创建所需的目录和文件。据我了解,必须分两步完成(创建目录,创建文件),所以我在考虑使用锁定文件,但同样的问题适用:我在哪里创建锁定文件?我不知道需要创建多少级别的文件夹,并且在某些时候,我可能会失去写入权限,因此锁定文件没有“安全的地方”。

然后我考虑使用锁定目录而不是锁定文件,但我找不到任何“测试和设置”方法来创建目录(Directory.CreateDirectory(path)不会告诉你它是否做了什么)。

那么正确的方法是什么?

4

2 回答 2

5

以临时名称创建目录和文件,并将目录自动重命名为最终名称。

或者使用事务性 NTFS(更难)。

于 2012-08-21T14:02:11.780 回答
1

您可以使用允许您同步进程间的 Mutex 类。

http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx

在所有进程的伪代码中

grab the mutex
try
 check or create directory and file
finally
release the mutex 

这适用于在同一台电脑上运行的本地程序实例。未指定,但对于跨网络使用相同数据库的程序实例,您可以在数据库中实现类似互斥的功能。

于 2012-08-21T14:05:12.787 回答