Directory.Exists之后的DirectoryNotFoundException

时间:2018-10-11 11:19:24

标签: c# io

如何声明以下内容:

if (Directory.Exists(outputDestination) 
    && new DirectoryInfo(outputDestination).GetFiles().Count() > 0)

抛出DirectoryNotFoundException:在调用GetFiles()之前,如果我检查目录是否存在,则找不到路径的一部分

1 个答案:

答案 0 :(得分:2)

  

如何声明以下内容:

if (Directory.Exists(outputDestination) 
   && new DirectoryInfo(outputDestination).GetFiles().Count() > 0)
     

引发DirectoryNotFoundException吗?

您的代码可以抛出DirectoryNotFoundException,因为您已经创建了a TOCTOU bug

  

在软件开发中,检查时间到使用时间(TOCTTOU或TOCTOU,发音为“ tock too”)是一类软件错误,这些错误是由系统在条件检查之间的更改引起的(例如安全凭证)以及该检查结果的使用。这是一种竞争状况的例子。

仅仅是因为存在用于调用Directory.Exists()的目录,但这并不意味着它仍然存在用于调用DirectoryInfo()