2013-05-11 102 views
4

只是好奇,系统:: IO ::目录:: GetDirectories( “C:对C:\”)

我有,我用System::IO::Directory::GetDirectories("c:")代替System::IO::Directory::GetDirectories("c:\\")问题。

它最终从"C:\Windows\System32"检索目录。如果我没有使用其他驱动器的反斜杠,我结束了宽度目录,我不知道它们存在。

有人能告诉我为什么会发生这种情况?有没有一种模式?何时使用?

回答

4

当你忽略的路径(或驱动器盘符后)开始的反斜杠,路径被认为是相对当前目录。您可以使用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

+0

+1我忘了相对路径的内容。但是我仍然得不到的是:GetCurrentDirectory返回了项目文件夹“j:\ files \ solutrion \ project”(j:\是存储项目的驱动器)。当我使用未准备好的驱动器的字母时,抛出异常,当我使用准备好的驱动器的字母时,我被重定向到了一些奇怪的位置。隐藏文件设置为可见,所以我可以看到目录包含的所有内容。这意味着(drive):和(drive)之间有差异:\ – JMRC 2013-05-11 13:44:11

+0

我在我的机器中看不到您的问题。查询其他驱动器时,我会得到驱动器根目录的内容。 – 2013-05-11 14:03:22

+0

即使没有反斜杠? – JMRC 2013-05-11 14:54:50