2014-04-10 39 views
2

在我的代码中,我需要检查一个目录是否存在,如果不存在,创建它。Directory.Exists(Dir)函数不能按预期工作

不幸的是,即使Directory.Exists返回false,该目录仍然存在并且抛出了一个execption。

这里是我使用的代码:

if (!Directory.Exists(emailAttachmentsPath)) 
{ 
    Directory.CreateDirectory(emailAttachmentsPath); 
} 

即使在磁盘上存在的目录,该函数返回false,我得到一个错误。

有什么我失踪?

感谢 菲利普

+4

您可以放心地使用'Directory.CreateDirectory'而不检查是否存在。它不会覆盖任何东西。 [MSDN](http://msdn.microsoft.com/en-us/library/54a0at6s(v = vs.110).aspx):_“如果该目录已存在,则此方法不会创建新目录,但它为现有目录返回一个DirectoryInfo对象“_ –

+4

抛出哪种类型的异常? –

+1

猜测,存在具有该名称的*文件*。这会引发异常。但是,当然,'Directory.Exists()'将返回false。 –

回答

4

一个猜测,确保emailAttachmentsPath不包含文件名。见doc这里:

返回值类型: System.Boolean true,如果路径指向现有的 目录;假如果目录不存在试图确定指定文件存在发生错误时 。 如果路径 引用了现有目录,则为true;否则,是错误的。

1

从MSDN http://msdn.microsoft.com/en-us/library/system.io.directory.exists%28v=vs.110%29.aspx

如果没有至少只读权限的目录, 有不存在的方法将返回false。

如果在尝试 确定指定文件是否存在时发生任何错误,则Exists方法返回false。在 的情况下会发生这种情况,这些情况会导致例外情况,例如传递带有无效 字符或太多字符的文件名,磁盘发生故障或丢失,或者调用者无权读取文件。

相关问题