GEt只有文件名而不是整个路径

时间:2017-10-12 17:50:23

标签: c#

我正在制作关于从所选驱动器获取所有文本文件的项目。问题是我得到了所有文本文件的名称以及路径,但我需要的只是名称。我不想甚至得到扩展名,我想要的只是该文本文件的名称。我在互联网上搜索过但无法找到正确的答案。我将所有这些名称存储在列表框中。这是我的代码:

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);
    }
}

如何才能获取名称,而不是整个路径和扩展名?

3 个答案:

答案 0 :(得分:5)

Path.GetFileNameWithoutExtension方法会为您完成此操作。

https://msdn.microsoft.com/en-us/library/system.io.path.getfilenamewithoutextension(v=vs.110).aspx

  

返回没有扩展名的指定路径字符串的文件名。

将GetFiles的结果传递给方法,它应该返回您需要的内容。

答案 1 :(得分: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))
                        );

此外,如果您只需要没有扩展名的文件名,那么您可以建议Valuator answer

答案 2 :(得分:1)

查看System.IO.Path.GetFileNameWithoutExtension()

您可以执行类似

的操作
txtfiles = Directory.GetFiles(folder, "*.txt");
var fileNames = txtfiles.Select(System.IO.Path.GetFileNameWithoutExtension).ToList();