在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 中检查文件是不是存在