2013-10-15 72 views
0

我正在檢查目錄中的文件夾名稱。它有79個文件夾完全在裏面,但是當我打印出來的控制檯上我只得到49 我的代碼:我的搜索文件夾功能不起作用?

 StreamWriter sw; 
     string dirPath = @"F:\Path\"; 
     DirectoryInfo dir = new DirectoryInfo(dirPath); 
     int i = 1; 
     sw = new StreamWriter(dirPath + "Pathlist.txt"); 
     foreach (string d in Directory.GetDirectories(dirPath)) 
     { 
      string[] s = d.Split('\\'); 
      sw.Write(i + ". " + s[2] + Environment.NewLine); 
      i++; 
     } 

但是,當我調試我的代碼,它通過所有的文件夾,並得到他們的名字。

回答

0

可以使用File.WriteAllLines方法寫入字符串的集合到一個文件中。

Directory.GetDirectoriesSearchOption.AllDirectories會給你所有的目錄,給定的路徑

的子目錄使用Path.GetFileName方法,你可以得到路徑的最後一個目錄名。

使用Path.Combine當您加入一個或多個字符串作爲路徑。

string path =Path.Combine(dirPath, "Pathlist.txt"); 

File.WriteAllLines(path, 
      Directory.GetDirectories(dirPath, "*", SearchOption.AllDirectories) 
       .Select(d=>Path.GetFileName(d))); 
+0

你能解釋一下代碼的作用嗎?代碼工作... –

+0

@HussainMurtaza答案更新,希望對你有所幫助 – Damith

0

試試這個

string dirPath = @"F:\Path\"; 
if(Directory.Exists(dirPath)) 
{ 
    if(File.Exists(dirPath+"\\Pathlist.txt")) 
    { 
     /// Do your Code here 
     /// As Damith Said do this 
     File.WriteAllLines(path,Directory.GetDirectories(dirPath, "*", SearchOption.AllDirectories) 
      .Select(d=>Path.GetFileName(d))); 

    } 
} 
+0

那麼該目錄存在和文件也存在。但它並沒有寫出所有的文件夾名稱只有49. –

+0

作爲damith所說的那樣做 – Aravind