2012-02-24 262 views
2

我想一個文件夾中提取文件的列表,我目前使用:如何返回不包含目錄路徑的目錄文件/文件夾?

string[] files = Directory.GetFiles(txtbxNewFolder.Text); 

但返回的東西,如「C:\用戶\大麗花\桌面\新建文件夾\ jerry.txt」。有沒有辦法只返回「jerry.txt」,或者我需要做一些拆分數組字符串?

我也試圖在目錄中返回文件夾列表,我目前使用:

string[] folders = Directory.GetDirectories(txtbxOldFolder.Text); 

但返回的東西,如「C:\用戶\大麗花\桌面\新建文件夾\文件夾1」。有沒有辦法只返回「folder1」,或者我需要做一些拆分數組字符串?

回答

12

使用LINQ,你可以得到的只是文件的列表:

Directory.GetFiles(txtbxNewFolder.Text).Select(f => Path.GetFileName(f)); 

雖然不是GetFiles我可能會使用:

Directory.EnumerateFiles(txtbxNewFolder.Text).Select(f => Path.GetFileName(f)); 

它不是那麼簡單拿到目錄名稱,但這應該工作(未經測試):

Directory.GetDirectories(txtbxOldFolder.Text) 
    .Select(d => new DirectoryInfo(d).Name); 

同樣,有一個:

Directory.EnumerateDirectories(txtbxOldFolder.Text) 
    .Select(d => new DirectoryInfo(d).Name); 
+0

您列出的解決方案的工作,但我必須將.ToArray()添加到每個的結尾,以獲得它填充到數組中。 string [] folders = Directory.GetDirectories(txtbxOldFolder.Text) .Select(d => new DirectoryInfo(d).Name).ToArray(); string [] files = Directory.GetFiles(txtbxNewFolder.Text) .Select(f => Path.GetFileName(f)) .ToArray(); – 2012-02-24 15:44:08

3

你可以使用Path.GetFileName和LINQ

例如爲:

string[] files = Directory.GetFiles(txtbxNewFolder.Text) 
          .Select(f => Path.GetFileName(s)) 
          .ToArray(); 
1

看一看我們的FileInfo和DirectoryInfo的類。

你可以這樣做:

爲DirectoryInfo的
foreach (String file in files) { 
    var fi = new FileInfo(file); 
    Console.Out.WriteLine(fi.Name); 
} 

類似。

相關問題