从不完整的文件名中获取扩展名

本文关键字:获取 扩展名 文件名 | 更新日期: 2023-09-27 18:35:14

我有一条没有给出扩展名的路径:

C:'myFilename

我怎么知道这个文件的扩展名是什么?除了循环整个目录并查看哪一个与我拥有的字符串匹配之外,还有更简单(且强度更低)的方法吗?

从不完整的文件名中获取扩展名

  1. Directory.GetFiles()searchPattern 参数中定义不完整的路径,末尾带有 *
  2. 遍历所有匹配的文件路径,并使用Path.GetFileName()Path.GetExtension()获取其文件名和扩展名

    string searchPattern = "myFilename*";
    string[] filePaths = Directory.GetFiles (@"C:'", searchPattern);
    foreach (string filePath in filePaths) {
        string fileName = Path.GetFileName(filePath);
        string ext = Path.GetExtension(filePath);
    }
    

同一目录中可以有许多具有相同文件名且扩展名不同的文件:

//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() 
...
System.IO.Directory.GetFiles("C:''","myFilename*")

将返回与模式匹配的所有文件名的数组,而无需您自己循环。

这取决于,理想情况下,您的程序将期望有限的扩展列表。使用这些扩展名,您可以直接访问该文件。但是如果你不知道,那么你只能得到那些符合正则表达式文件名的文件.*,其中*将是后面的任何字符序列。

这是执行此操作的示例代码

String[] FileList = GetFiles("c:'MyFileName*",SearchOption.TopDirectoryOnly); 

您还将找到此函数的另外 2 种变体,它们将为您提供递归搜索和其他选项

你可能想读这个http://msdn.microsoft.com/en-us/library/ms143316.aspx