Directory.Delete(folder) 和 Directory.Delete(folder, false) 有啥区别?

Posted

技术标签:

【中文标题】Directory.Delete(folder) 和 Directory.Delete(folder, false) 有啥区别?【英文标题】:What's the difference between Directory.Delete(folder) and Directory.Delete(folder, false)?Directory.Delete(folder) 和 Directory.Delete(folder, false) 有什么区别? 【发布时间】:2016-01-25 04:09:25 【问题描述】:

下面两个代码段有什么区别?

Directory.Delete(folder)

Directory.Delete(folder, false)

?

我的意思是,如果特定文件夹为空,他们都会删除它; 否则,他们会引发异常,对吗?或者有什么我想念的吗?谢谢!

【问题讨论】:

复制 Directory.Delete > 粘贴到 Google > 点击第一个结果 > msdn.microsoft.com/en-us/library/… 只需按F12 即可获取有关所有参数的详细信息.. 无需在此处发布 @Alexei Levenkov SO 希望我们证明否决票的合理性。 【参考方案1】:

MSDN documentation 本身提到了区别,它说

Delete(String)

从指定路径中删除一个空目录。

Delete(String, Boolean)

删除指定的目录以及目录中的所有子目录和文件(如果有指示)。

当您将true 作为boolean 变量传递时,它会删除路径中的目录、子目录和文件。

【讨论】:

【参考方案2】:

Delete (String, Boolean) 如果 boolean 设置为 true,则基本上递归删除文件和文件夹,如果设置为 false,它只会删除空目录,否则会引发异常。

Delete(String) 只删除空目录,如果文件夹不为空则会引发异常。

目录必须具有在这两种情况下执行删除所需的权限。

【讨论】:

【参考方案3】:

来自MSDN

  Delete(String)    

从指定路径中删除一个空目录。

Delete(String, Boolean) 

删除指定的目录,如果有指示,删除任何子目录 和目录中的文件。

path 参数可以指定相对或绝对路径信息。 相对路径信息被解释为相对于当前 工作目录。要获取当前工作目录,请参见 获取当前目录。

从路径参数的末尾删除尾随空格之前 删除目录。

More information

路径参数不区分大小写。 如果递归参数为真,用户必须写 当前目录以及所有目录的权限 子目录。

删除目录时此方法的行为略有不同 包含重解析点,例如符号链接或挂载 观点。如果重解析点是一个目录,例如一个挂载点,它 被卸载并且安装点被删除。这种方法不 通过重解析点递归。如果重解析点是符号 链接到文件,重解析点被删除,而不是目标 符号链接。

在某些情况下,如果您在 File 中打开了指定的目录 资源管理器,Delete 方法可能无法删除。

【讨论】:

【参考方案4】:

Directory.Delete(文件夹,布尔值)

布尔值决定我们是否要删除目录中的任何子目录和文件。

【讨论】:

【参考方案5】:

Directory.Delete Method (String)

此方法的行为与 Delete(String, Boolean) 相同,但为第二个参数指定了 false。

【讨论】:

以上是关于Directory.Delete(folder) 和 Directory.Delete(folder, false) 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我使用 directory.delete 时 gif 文件不会删除?

无法使用 Directory.Delete(path, true) 删除目录

为啥 System.IO.Directory.Delete(string,bool) 仅在 asp.net 站点模拟用户时将文件夹标记为已删除

32.Directory类

32.Directory类

Directory 文件夹操作