好吧,我有点奇怪的东西.我意识到我没有正确格式化路径名是错误的,但我希望以下测试返回false,特别是因为该文件夹不存在.
DirectoryExists("C:temp\\foo")
Run Code Online (Sandbox Code Playgroud)
但事实上,即使目录不存在,它也会返回true!
代码应该是
DirectoryExists("C:\\temp\\foo")
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么我从第一个版本中得到误报吗?我希望它返回false或者抛出异常,但不能返回true.
Jar*_*Par 21
此API行为正常但在您第一次遇到此行为时经常显示不正确.省略\卷号后有特殊语义.它将使用传递给SetCurrentDirectory该卷的最后一次调用的值替换卷说明符.这里将讨论如何记住这一点
在这种情况下,传入的最后一个值是c:\或者当前目录尚未设置.因此,呼叫实际上成为第二个版本
Directory.Exists("c:\\temp\\foo")
Run Code Online (Sandbox Code Playgroud)
这正确评估为真
为什么会发生这种情况Directory.Exists,在函数中深入,深入使用GetFullPathName,它依赖于此行为(请参阅链接文档).
| 归档时间: |
|
| 查看次数: |
3219 次 |
| 最近记录: |