在c#中检查路径中是不是存在文件夹?

Posted

技术标签:

【中文标题】在c#中检查路径中是不是存在文件夹?【英文标题】:Check whether a folder exists in a path in c#?在c#中检查路径中是否存在文件夹? 【发布时间】:2010-12-22 13:00:22 【问题描述】:

如何检查目录中是否存在名为RM 的文件夹...我已经通过txtBoxInput.Text 之类的文本框给出了目录路径,在此路径中我必须检查...有什么建议吗?

【问题讨论】:

【参考方案1】:

Path.Combine 和 Directory.Exists ?

http://msdn.microsoft.com/en-us/library/system.io.path.combine.aspx

http://msdn.microsoft.com/en-us/library/system.io.directory.exists.aspx

if (Directory.Exists(Path.Combine(txtBoxInput.Text, "RM"))

    // Do Stuff

【讨论】:

就像问题应该是问题一样,答案也应该是答案(例如,sans ?),以免被视为讽刺。 这是一个问题,因为我不完全确定我是否正确理解了这个问题。就像在现实世界的对话中一样,我会说“你能用 X 吗?”。根本不是讽刺——只是英语。 当然听起来像讽刺。 @StevenRobbins 你能告诉我如何检查本地电脑中的共享文件夹是否存在。我需要从袖珍电脑上测试它。【参考方案2】:

您可以使用Directory.Exists() 来测试某个文件夹在特定时间是否存在,但请谨慎使用!如果您执行以下操作:

if (Directory.Exists(path))

    // Uh-oh!  Race condition here!
    // Do something in path

你陷入了一个典型的错误。在Directory.Exists() 调用和// Do something in path 之间,用户完全有可能删除了该目录。无论如何,无论何时您进行文件 I/O,您必须处理如果某些内容不可访问、不存在等情况引发的异常。如果无论如何,您必须处理所有错误,通常不值得在顶部放置额外的多余检查。

【讨论】:

在检测到目录后将其删除是例外的存在理由。当然,如果有人对任何错误都使用异常,我可以理解他们的困惑。【参考方案3】:
using System.IO;


if (Directory.Exists(path))

     // Do your stuff

【讨论】:

除非您仍然正确处理打开/读取文件的失败,否则不要这样做。如果您未能处理故障,则您已经创建了一个竞争条件,并且可能是一个安全漏洞。 原始问题询问如何检查目录是否存在。这正是代码的作用。我可以在这里输入哪些可能的打开/读取文件失败句柄? @Greg_D 没有人说这是商业代码,甚至可能没有任何故障处理(可能是出于研究目的?)。此外,答案既不是错误的,也不是误导性的,只是你的概念不完整..那么它不应该被否决。 @MarceloRamires:是什么让你认为我不赞成这个答案? (我没有。)无论哪种方式,竞争条件都是竞争条件,任何开发人员都应该睁大眼睛进入这种情况。如果存在竞争条件,则应该是有意识的选择,而不是无知的错误。 @Felipe:通过条件内的测试路径完成的任何操作都可能会爆炸性地失败,或者至少抛出由不存在的路径触发的异常。如果// Do your stuff 仍在处理所有DirectoryNotFoundException(或其他),那就太好了。但是如果这个存在性测试试图避免处理这些异常,那么它就失败了。【参考方案4】:

字符串路径=txtBoxInput.Text+'//'+"RM";

 if (Directory.Exists(path))
return true;

【讨论】:

以上是关于在c#中检查路径中是不是存在文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中的 WinRAR、7Zip、Zip、Tar、Winzip 中检查文件是不是存在

c#中如何检测文件路径是不是存在

通过文件夹名称检查 Google Drive 中是不是存在文件夹(C#)

如何在.net mvc 3中使用c#检查网络中文件的存在

C#编程中,当前上下文中不存在名称"Debug"是啥意思?

使用 JavaScript 检查 iOS 路径中是不是存在文件