2011-05-16 47 views
0

只是我今天注意到做目錄搜索時可能會絆倒一些人。Oddity與System.IO.Directory.GetDirectories

我在我的Windows XP機器上發現

System.IO.Directory.GetDirectories( 「C:\」)給我的文件夾17

System.IO.Directory.GetDirectories( 「C:」 )給我文件夾17

System.IO.Directory.GetDirectories( 「d:\」)給我12個夾

System.IO.Directory.GetDirectories( 「d」)給我0的文件夾

我想弄清楚爲什麼我的搜索丟失了我的D盤。

+0

嗯,它歸結到搞清楚Directory.InternalGetFileDirectoryNames(string path,string userPathOriginal,string searchPattern,bool includeFiles,bool includeDirs,SearchOption searchOption)是做什麼的。但我猜想當前目錄可能是正確的。我正在調試的應用程序位於D驅動器的葉文件夾中。 – 2011-05-17 07:54:06

回答

2

我的猜測是,GetDirectories("D:")向你d驅動的當前目錄內的目錄列表,而GetDirectories("D:\")讓你在d驅動器的根目錄的列表。

如果你的D盤的根目錄有12個目錄,並且當前目錄在你的D盤上,並且沒有目錄,那麼這些就是你應該預期的結果。

+0

Windows實際上沒有每個驅動器當前目錄的概念。爲了向後兼容,它由cmd.exe模擬。 – Josh 2011-05-16 02:04:21

0

什麼是驅動器D的當前目錄:?

這不是根。

2

Windows歷史上提供了向後兼容DOS的方式,它將只包含驅動器盤符的路徑視爲對驅動器「當前目錄」的引用。但由於每個驅動器實際上沒有當前目錄(cmd.exe模擬此操作,根據Raymond Chen),我的猜測是它沒有返回任何內容,因爲進程的當前目錄位於C:驅動器上。嘗試將Environment.CurrentDirectory設置爲D:\,然後查看是否獲得相同的結果。

+0

很好的解釋。它適合。但是,如果只有共享和本地磁盤處理之間存在一致性。 – 2011-05-17 07:57:03