C# 从不完整的文件名获取扩展名
我有一个没有给定扩展名的路径:C# 从不完整的文件名获取扩展名,c#,.net,C#,.net,我有一个没有给定扩展名的路径: C:\myFilename 我怎么知道这个文件的扩展名是什么?除了循环整个目录并查看哪个目录与我拥有的字符串相匹配之外,还有更简单(且强度更低)的方法吗 System.IO.Directory.GetFiles("C:\\","myFilename*") 将返回与模式匹配的所有文件名的数组,而无需您自己循环。视情况而定,理想情况下,您的程序将需要有限的扩展名列表。使用这些扩展名,您可以直接访问该文件。但是如果您不知道,那么您只能得到满足正则表达式文件名*的文件
C:\myFilename
我怎么知道这个文件的扩展名是什么?除了循环整个目录并查看哪个目录与我拥有的字符串相匹配之外,还有更简单(且强度更低)的方法吗
System.IO.Directory.GetFiles("C:\\","myFilename*")
将返回与模式匹配的所有文件名的数组,而无需您自己循环。视情况而定,理想情况下,您的程序将需要有限的扩展名列表。使用这些扩展名,您可以直接访问该文件。但是如果您不知道,那么您只能得到满足正则表达式文件名*的文件,其中*将是后面的任意字符序列 下面是执行此操作的示例代码
String[] FileList = GetFiles("c:\MyFileName*",SearchOption.TopDirectoryOnly);
您还将发现该函数的另外两个变体,它们将为您提供递归搜索和其他选项
你可能想看看这个
同一目录中可以有许多文件名相同、扩展名不同的文件:
//Get all the files starting from myFilename
string[] files = Directory.GetFiles(@"c:\", "myFilename.*");
//Use Path.GetExtenstion() method to extract extension part
foreach(string file in files)
{
extension = Path.GetExtension(file);
Console.WriteLine("Extension of ('{0}') is '{1}'", file, extension);
}
有一些非常有用的方法
Path.GetDirectoryName()
Path.GetFileName()
Path.GetFileNameWithoutExtension()
Path.GetFullPath()
...
Directory.GetFiles()
的searchPattern
参数中定义不完整的路径,最后使用*
Path.GetFileName()
和Path.GetExtension()
路径不包含扩展名,因此如果要引用现有文件,则必须通过搜索匹配的文件来获取扩展名。你可以通过循环目录来实现,或者先把目录读入字典。看起来我必须这样做。我希望避免它,因为我认为以这种方式循环处理数千个文件所需的cpu资源可能相当多?
string searchPattern = "myFilename*";
string[] filePaths = Directory.GetFiles (@"C:\", searchPattern);
foreach (string filePath in filePaths) {
string fileName = Path.GetFileName(filePath);
string ext = Path.GetExtension(filePath);
}