我有一条没有给出扩展名的路径:
C:myFilename
我怎么知道这个文件的扩展名是什么?除了循环整个目录并查看哪一个与我拥有的字符串匹配之外,还有更简单(且强度更低)的方法吗?
- 在
Directory.GetFiles()
的searchPattern
参数中定义不完整的路径,末尾带有*
-
遍历所有匹配的文件路径,并使用
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