获取文件扩展名 C#

Get File Extension C#

我有一个包含文件名列表的下拉菜单。在下拉列表中选择文件名后,我执行以下操作

string filename = ddl.SelectedItem.Text;
string path = "F:\WorkingCopy\files\" + filename +".docx";
DownloadFile(path,filename);

文件夹中的文件可以包含任何扩展名。因为我在字符串路径中硬编码了“.docx”,所以一切正常。但是我需要单独使用 ddl.SelectedItem.Text 来获取文件名的扩展名。你能告诉我怎么做吗?

我有的东西 1.)

中不带扩展名的文件名
string filename = ddl.SelectedItem.Text;

2.) 文件所在路径

string path = "F:\WorkingCopy\files\" + filename 

我正在尝试使用这些获取文件扩展名。有人可以对此提出建议吗?

你可以通过后面的行

来实现
 try
 {
    var extensions = new List<string>();
    var files = Directory.GetFiles("F:\WorkingCopy\files\", filename + ".*", System.IO.SearchOption.TopDirectoryOnly);

    foreach (var tmpfile in files)
       extensions.Add(Path.GetExtension(tmpfile));

}
catch (Exception ex)
{
            throw ex;
}

这对你有帮助吗?

您可以这样使用 Directory.EnumerateFiles()

string path = "F:\WorkingCopy\files\";
string filename = ddl.SelectedItem.Text;

string existingFile = Directory.EnumerateFiles(path, filename + ".*").FirstOrDefault();

if (!string.IsNullOrEmpty(existingFile))
    Console.WriteLine("Extension is: " + Path.GetExtension(existingFile));

Directory.EnumerateFilespath 中搜索像 filename.* 这样的文件。 Path.GetExtension() returns 找到的文件的扩展名。


一般来说,我更喜欢使用 EnumerateFiles() 而不是 GetFiles,因为它 returns 而 IEnumerable<string> 而不是 string[]。这表明它只根据需要 returns 匹配文件,而不是一次搜索所有匹配文件。 (这对你的情况并不重要,只是一般性的说明)。

您可以使用Directory.GetFiles方法:

string result =  Directory.GetFiles(path, filename + ".*").FirstOrDefault();

here

此处 " * "WildCard 并将搜索以 YourFileName 开头的文件名。

使用Directory.GetFiles()方法。像这样

string[] files = Directory.GetFiles("F:\WorkingCopy\files\", filename+".*");

这应该会为您提供一组具有相同文件名但不同扩展名的文件名。如果你只有一个,那么你总是可以使用第一个。

你可以简单地用点分割它们,例如,试试这个代码

        string folder = @"F:\WorkingCopy\files\";
        var files = System.IO.Directory.GetFiles(folder, filename + ".*");

        if (files.Any())
        {
            string ext = System.IO.Path.GetExtension(files.First()).Substring(1);
        }

此代码给出的结果是此文件的扩展名是 txt 文件。