2012-02-24 203 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); 
} 

类似。

相关问题