在C#中使用通配符解析相对路径

在C#中,如果我有一个通配符的目录路径和相对文件路径, "c:foobar""..blah*.cpp" ,有没有一种简单的方法来获取绝对文件路径列表, { "c:fooblaha.cpp", "c:fooblahb.cpp" }

背景:有一个源代码树,任何目录都可以包含构建定义文件,它使用相对路径和通配符来指定源文件。 此处的任务是为每个构建定义文件生成所有源文件的绝对路径列表。


您可以先获取绝对路径,然后枚举匹配通配符的目录中的文件:

// input
string rootDir = @"c:foobar"; 
string originalPattern = @"..blah*.cpp";

// Get directory and file parts of complete relative pattern
string pattern = Path.GetFileName (originalPattern); 
string relDir = originalPattern.Substring ( 0, originalPattern.Length - pattern.Length );
// Get absolute path (root+relative)
string absPath = Path.GetFullPath ( Path.Combine ( rootDir ,relDir ) );

// Search files mathing the pattern
string[] files = Directory.GetFiles ( absPath, pattern, SearchOption.TopDirectoryOnly );

这很简单。

using System.IO;
      .
      .
      .
string[] files = Directory.GetFiles(@"c:", "*.txt", SearchOption.TopDirectoryOnly);
链接地址: http://www.djcxy.com/p/10219.html

上一篇: Resolving relative path with wildcard in C#

下一篇: What is & in return($var & 1) in PHP