【问题标题】:Directory.Exists() fails with to recognize nonexistent folder (backward slash error)Directory.Exists() 无法识别不存在的文件夹(反斜杠错误)
【发布时间】:2012-07-10 12:00:01
【问题描述】:

我正在使用Directory.Exists() 来检查文件夹是否存在,但遇到该方法失败。我的命令是:

if (Directory.Exists(myFolder) == false) 
{ 
    MessageBox.Show(myFolder, "Invalid Log Folder path", MessageBoxButtons.OK, MessageBoxIcon.Hand); 
}

if (Directory.Exists(myFolder) == true) 
{ 
     MessageBox.Show(myFolder, "Valid Folder path"); 
}

当 myFolder 为 C:\Documents and Settings\UserID\My Documents 时,它返回 TRUE

当 myFolder 为 C:\Documents and Settings\xxx\My Documents 时,它返回 FALSE(假设 xxx 不存在)。

但是,当 myFolder 为 C:\\Documents and Settings\UserID\My Documents 时,它也会返回 TRUE

C: 旁边的双反斜杠必须使测试无效。但是,Directory.Exists() 没有意识到这一点。

使用更多\ 仍然会遇到同样的问题。

我只是无法理解这种故障是如何发生的。我正在使用 .NET 3.5 的 VS2008。

【问题讨论】:

  • 账号UserID是否存在? myFolder 是如何初始化的?这些路径是字符串包含的吗?那是您在字符串文字中键入的内容吗?你问的不是很清楚。
  • it also returns TRUE. 看来您解决了自己的问题...
  • myFolder 是字符串文字吗?如果是这样,您是否使用 @ 前缀?
  • 双反斜杠在技术上并非无效。实际上,这意味着您在路径中添加相对路径到根目录。就像.. 表示直接父母,或者. 表示自己。 `` 表示根
  • “Directory.Exists() 无法识别不存在的文件夹” - 我想它会...

标签: c# directory exists


【解决方案1】:

试试这个:

  1. 打开命令提示符
  2. 输入命令cd c:\\\\\\\\\

你会发现这是完全可以接受的。

另一个测试:

  1. 打开命令提示符
  2. 试试cd c:\\\\\\\\\\\\temp

假设您有一个,您现在将位于 c:\temp 目录中。

最后一个:

  1. 打开命令提示符
  2. 试试cd c:\\\\\\\\\\\\\inetpub\\\\\\\\\\\\\\\\\\\\\logs

假设您有一个,您现在位于 c:\inet\logs 目录中。

您似乎对Directory.Exists() 方法的行为有错误的预期。

在命令和那些方法中,任意数量的“\”都会被解释为单个“\”,并且是完全可以接受的输入。

【讨论】:

  • 但这不是 Windows 资源管理器的操作方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 2016-11-20
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
相关资源
最近更新 更多