如何以原子方式在不存在的文件夹中创建文件?

Zon*_*nko 3 c# directory file atomic

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

基本上,我想立即原子地创建所需的目录和文件.根据我的理解,它必须分两步完成(创建目录,创建文件),所以我考虑使用锁文件,但同样的问题适用:我在哪里创建锁文件?我不知道需要创建多少级别的文件夹,并且在某些方面,我可能会放弃写入权限,因此锁定文件没有"安全的地方".

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

那么正确的方法是什么?

usr*_*usr 5

在临时名称下创建目录和文件,并以原子方式将目录重命名为最终名称.

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