获取文件扩展名 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.EnumerateFiles
在 path
中搜索像 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 文件。
我有一个包含文件名列表的下拉菜单。在下拉列表中选择文件名后,我执行以下操作
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.EnumerateFiles
在 path
中搜索像 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 文件。