0

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

C:\myFilename

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

4

4 回答 4

1
  1. Directory.GetFiles()在'ssearchPattern参数中定义您的不完整路径,*最后
  2. 遍历所有匹配的文件路径并使用 and 获取它们的文件名和扩展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);
    }
    
于 2013-10-12T07:59:53.870 回答
0
System.IO.Directory.GetFiles("C:\\","myFilename*")

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

于 2013-10-12T07:45:11.887 回答
0

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

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

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

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

您可能想阅读此 http://msdn.microsoft.com/en-us/library/ms143316.aspx

于 2013-10-12T07:47:17.680 回答
0

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

//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 Class有一些非常有用的方法。

Path.GetDirectoryName()
Path.GetFileName()
Path.GetFileNameWithoutExtension()
Path.GetFullPath() 
...
于 2013-10-12T07:50:13.687 回答