2017-10-12 45 views
-2

我正在项目中获取选定驱动器中的所有文本文件。事情是我得到的所有文本文件的名称与路径,但我需要的是名称。我甚至不想得到扩展名,我想要的只是该文本文件的名称。我在互联网上搜索了所有内容,但找不到正确的答案。我将所有这些名称存储在列表框中。这里是我的代码:不是全路径和扩展GEt唯一的文件名而不是整个路径

String[] dir1 = System.IO.Directory.GetDirectories(@"F:\"); 
for (int i = 0; i < dir1.Length; i++) 
{ 
    FileAttributes attributes = File.GetAttributes(dir1[i]); 

    if ((attributes & FileAttributes.Hidden) != fileAttributes.Hidden) 
    { 
     string folder = @""+ dir1[i]; 
     txtfiles = Directory.GetFiles(folder, "*.txt"); 
     listBox1.Items.AddRange(txtfiles); 
    } 
} 

我怎样才能得到的只有名字,?

+2

'我已经找遍了所有在internet'似乎不太可能。将您的标题+“c#”提供给Google返回290万次点击 – Plutonix

回答

1

您需要使用Path.GetFileName方法,这将仅仅只从路径返回提取的文件名,所以你可以做的是投影txtfiles获取集合的只是文件名,如:

listBox1.Items.AddRange(txtfiles.Select(file=>Path.GetFileName(file)); 

,如果你只需要路径,而不是实际读它们,你可以使用EnumerateFiles方法,这将是在内存性能更好的具体做法是:

listBox1.Items.AddRange(txtDirectory.EnumerateFiles(folder, "*.txt") 
           .Select(file=>Path.GetFileName(file)) 
         ); 

此外,如果你只需要文件的名称,没有扩展名,那么你可以d o建议使用Valuator answer

1

看看System.IO.Path.GetFileNameWithoutExtension()

你可以做类似

txtfiles = Directory.GetFiles(folder, "*.txt"); 
var fileNames = txtfiles.Select(System.IO.Path.GetFileNameWithoutExtension).ToList(); 
相关问题