2013-05-11 29 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