获取文件扩展名 C#

Sam*_*iel 3 c# asp.net file-extension file

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

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

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

我有的东西 1.) 没有扩展名的文件名

string filename = ddl.SelectedItem.Text;
Run Code Online (Sandbox Code Playgroud)

2.) 文件所在的路径

string path = "F:\\WorkingCopy\\files\\" + filename 
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用这些 . 任何人都可以对此提出建议吗?

Ren*_*ogt 5

你可以这样使用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));
Run Code Online (Sandbox Code Playgroud)

Directory.EnumerateFiles搜索pathfilename.*. Path.GetExtension()返回找到的文件的扩展名。


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