尝试获取没有路径或扩展名的文件名并输出到列表。

时间:2017-09-22 13:17:31

标签: c#

是由同事给出的,但我只需要文件名:

    private List<string> getWavFileList()
    {
        string path = @"c\test automation\wave files";

        string[] files = Directory.GetFiles(path, "*.wav");


        List<string> list = new List<string>(files);

        return list;

    }

输出列表包含路径和扩展名,我只需要文件名。我正在研究自己的方法,但无法编译:

    private List<string> getWavFileList()
    {
        StringBuilder builder = new StringBuilder();
        string path = @"c\test automation\wave files";
        DirectoryInfo di = new DirectoryInfo(path);
        FileInfo[] smFiles = di.GetFiles("*.wav");
            foreach (FileInfo fi in smFiles)
            {
                builder.Append(Path.GetFileNameWithoutExtension(fi.Name));
                builder.Append(", ");
            }

            string files = builder.ToString();

            List list = new List<string>(files);

            return list;

3 个答案:

答案 0 :(得分:3)

我建议修改为以下内容;

private List<string> getWavFileList()
{
    string path = @"c:\test automation\wave files";
    DirectoryInfo di = new DirectoryInfo(path);
    FileInfo[] smFiles = di.GetFiles("*.wav");
    List<string> list = new List<string>(smFiles.Select(f => Path.GetFileNameWithoutExtension(f.Name)));

    return list;
}

答案 1 :(得分:2)

在第一个解决方案中替换此行

List<string> list = new List<string>(files);

用这个:

return files.Select(Path.GetFileNameWithoutExtension).ToList();

这需要使用System.Linq

答案 2 :(得分:2)

我不知道为什么你用逗号连接字符串,我以为你想要一个列表:

private List<string> getWavFileList()
{
    return Directory.EnumerateFiles(@"c\test automation\wave files", "*.wav")
        .Select(System.IO.Path.GetFileNameWithoutExtension)
        .ToList();
}