在C#中检查路径中的文件夹是否存在?

5
如何检查一个名为RM的文件夹是否存在于目录中...我已经通过文本框提供了目录路径,例如txtBoxInput.Text,我需要在这个路径中进行检查...有什么建议吗?
4个回答

12

2
问题应该是问题,答案也应该是答案(例如,没有问号),否则它们可能会被误读为讽刺。 - T.J. Crowder
2
这是一个问题,因为我不确定我是否完全理解了问题。就像在现实世界的对话中,我会说“你能用X吗?”这一点并不讽刺 - 只是英语表达方式。 - Steven Robbins
2
听起来确实带着讽刺意味。 - Smur
@StevenRobbins,你能告诉我如何检查本地PC中的共享文件夹是否存在吗?我需要从口袋PC上测试它。 - user2681579

4

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

if (Directory.Exists(path))
{
    // Uh-oh!  Race condition here!
    // Do something in path
}

您犯了一个典型的错误。在调用Directory.Exists()// Do something in path之间,有可能用户已经删除了目录。无论如何,每当进行文件I/O时,必须处理抛出的异常,如果某些内容不可访问、不存在等等。如果您必须处理所有错误,那么在顶部添加额外的多余检查通常是不值得的努力。


当你检测到目录后立即删除它是异常存在的理由。当然,如果某人将异常用于任何和所有错误,我可以理解他们的困惑。 - gbjbaanb

0
using System.IO;


if (Directory.Exists(path))
{
     // Do your stuff
}

除非您仍然正确处理打开/读取文件的失败,否则请勿这样做。如果未能处理故障,则会创建竞争条件,并且可能存在安全漏洞。 - Greg D
3
原问题是如何检查目录是否存在。这正是代码所做的。那么我应该在这里放置什么可能的打开/读取文件失败处理呢? - Smur
2
@Greg_D 没有人说这是商业代码,甚至可能没有任何故障处理(只是用于学习目的,也许?)。此外,答案既不是错误的,也不会引导错,只是在你的概念上不完整。那么,它不应该被点踩。 - Marcelo
@MarceloRamires:你为什么认为我踩了这个答案?(我没有。)无论如何,竞态条件就是竞态条件,任何开发人员都应该睁大眼睛进入这种情况。如果竞态条件存在,那么它应该是一个有意识的选择,而不是出于无知而犯下的错误。 - Greg D
@MarceloRamires:竞态条件总是一个错误,特别是当它如此简单易懂时。如果这段代码是用于学习的,那么像这样的问题被提出来尤为重要,因为如果不这样做,主题就会学习错误的做事方式。 - Greg D
显示剩余2条评论

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接