有没有办法检查重复的文件夹/文件名而不会导致竞争条件?

时间:2013-06-27 15:38:13

标签: c++ filesystems

因此,在我的treeView_AfterLabelEdit中,我想应用用户输入的文件夹名称,并查看文件系统是否返回重复名称的错误。使用try-catch块有没有一种优雅的方法呢?

提前致谢!

2 个答案:

答案 0 :(得分:0)

首先,我假设您从treeView_AfterLabelEdit开始使用.Net和VC ++。

我不知道如何通过异常处理来实现这一目标,但这里还有其他一些想法:

您可以使用Directory::CreateDirectory。这将创建目录,如果它已经存在,它将不会执行任何操作。

Directory::Exists可以让你在使用它之前检查目录是否存在。

我不确定这与竞争条件有什么关系。

答案 1 :(得分:0)

是的,所以这显然是TOCTOU问题 - 这意味着唯一合理安全的解决方案是“尝试创建它,并抱怨如果这不起作用”。 - 做任何其他事情只会使代码更复杂,你仍然必须检查代码是否尝试创建它时是否有错误。