Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从不完整的文件名获取扩展名_C#_.net - Fatal编程技术网

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);
    }