2013-06-03 76 views
0

我試圖檢索我傳入的路徑的子目錄。它處理它,並給我一半的子目錄,但另一半,它會返回一個「?」調試時。我不知道是什麼原因造成這種 這裏是我有:C#,.getDirectories(字符串文件)問題檢索目錄

string root = @"C:\Users\Documents\Meta Consumer"; 
string[] subDir = Directory.GetDirectories(root); 

當調試:

1:(好)

2:(好)

3:(好)

..

:?(這是14)

:(15是這裏)

..

?:?

+2

看起來像http://stackoverflow.com/questions/10918981/get-question-mark-instead-property-name-and-value-in-debug-mode-in-visual-studio –

+0

的實例你可以添加一個搜索參數並指定'AllDirectories'或'TopLevelDirectory'如下:'string [] subDir = Directory.GetDirectories(root,「*。*」,SearchOption.AllDirectories);'然後實際編寫一個'foreach循環'返回那些價值。 – Greg

+1

我運行你的確切代碼,並從我的'用戶\ Documents \ somepathwithsubfolders'拉,它工作正常..也許你需要在管理模式下運行Visual Studio – MethodMan

回答

1

我不知道整個的目標,如果你打算專門搜索特定的物品或打算在所有操作目錄。我所看到的一件事是你沒有爲你的數組指定任何額外的搜索。這可能會阻礙我相信通過深層嵌套或許可問題。

解決方案一:確保您具有在指定目錄內執行遞歸搜索的有效權限。

解決兩個:您可以嘗試運行的所有項目與通配符搜索,然後迫使其搜索所有目錄。這可能有助於解決您可能遇到的潛在深層嵌套問題。

分辨率三:嘗試下面的代碼;看看它是否解決了這個問題。

string root = Environment.GetFolderPath(Environment.SpecialFolder.Documents); 
string[] subDir = Directories.GetDirectories(root, "*", SearchOption.AllDirectories); 
foreach (string s in subDir) 
{ 
    Console.WriteLine(s); 
} 

看看是否返回了以前沒有的正確信息。有些文件夾位於您的圖書館雖然被認爲是公開的用戶仍然鎖定,因爲他們駐留在用戶配置文件因此權限將是一個很好的檢查。

以管理員身份運行Visual Studio也會幫助您排除故障。你也應該看看是否有任何Inner Exceptions來幫助識別它。