c++ - 系统::IO::目录::GetDirectories( "c: vs c:\\")

标签 c++ .net

只是好奇,

我遇到的问题是我使用了 System::IO::Directory::GetDirectories("c:") 而不是 System::IO::Directory::GetDirectories("c:\\")

它最终从 "C:\Windows\System32" 中检索目录。如果我没有对其他驱动器使用反斜杠,我最终会得到我不知道存在的目录。

有人能告诉我为什么会这样吗?有模式吗?什么时候使用?

最佳答案

当您在路径开头(或驱动器盘符之后)省略反斜杠时,该路径被视为相对当前目录。您可以使用 System::IO::Directory::GetCurrentDirectory() 方法获取当前目录的值,也可以使用 System::IO 更改它::Directory::SetCurrentDirectory(path) 方法。

为了说明这一点:当当前目录是 C:\Windows 时,路径 C:test.txt 等同于 C:\Windows\test .txt.

GetDirectories方法返回指定路径中的所有目录,甚至是隐藏目录或系统目录(通常在 Windows 资源管理器中看不到)。所以我猜您是在谈论其他驱动器中的系统目录,例如 System Volume Information$RECYCLE.BIN

值得一提的是,在 Windows shell (cmd.exe) 中,我们可以为每个驱动器设置单独的当前目录。当你运行时:

C:\Windows\System32> cd d:\Temp
C:\Windows\System32> dir c:

你得到 C:\Windows\System32 的内容,然后当你运行时:

C:\Windows\System32> dir d:

你得到 D:\Temp 的内容

关于c++ - 系统::IO::目录::GetDirectories( "c: vs c:\\"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16496787/

相关文章:

c# - 检查 XElement 是否全局为 null

c++ - 我很难理解这些关于检测整数溢出的评论

C++ 未定义引用

c++ - 临时对象并通过(const/non-const) `value`

c# - 从表中获取 auto_increment id

c# - 如何在 Sqlite 中使用 Dapper.QueryMultiple

c++ - 在 visual studio 2010 中编译 IDL 文件时无法生成必要的文件

c++ - 如何以编程方式启动 Windows 应用商店应用程序?

c# - 如何在不转换时间的情况下更改 ZonedDateTime 的时区

.net - "Value does not fall within expected range"在运行时错误中是什么意思?