我有一条没有给出扩展名的路径:
C:\myFilename
我怎么知道这个文件的扩展名是什么?除了循环整个目录并查看哪个与我拥有的字符串匹配之外,还有更简单(且强度更低)的方法吗?
Directory.GetFiles()
在'ssearchPattern
参数中定义您的不完整路径,*
最后遍历所有匹配的文件路径并使用 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);
}
System.IO.Directory.GetFiles("C:\\","myFilename*")
将返回与模式匹配的所有文件名的数组,而无需您自己循环。
这取决于,理想情况下,您的程序将期待有限的扩展列表。使用这些扩展名,您可以直接访问该文件。但是,如果您不知道,那么您只能获取那些符合正则表达式 filename.* 的文件,其中 * 将是 . 之后的任何字符序列。
这是执行此操作的示例代码
String[] FileList = GetFiles("c:\MyFileName*",SearchOption.TopDirectoryOnly);
您还将找到此函数的另外 2 个变体,它们将为您提供递归搜索和其他选项
您可能想阅读此 http://msdn.microsoft.com/en-us/library/ms143316.aspx
在同一个目录中可以有许多具有相同文件名和不同扩展名的文件:
//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()
...