12

C# では、ディレクトリ パスとワイルドカードを使用した相対ファイル パスがあるとします。

"c:\foo\bar""..\blah\*.cpp"

絶対ファイルパスのリストを取得する簡単な方法はありますか? 例えば

{ "c:\foo\blah\a.cpp", "c:\foo\blah\b.cpp" }

バックグラウンド

ソース コード ツリーがあり、任意のディレクトリにビルド定義ファイルを含めることができます。このファイルは、ワイルドカード付きの相対パスを使用して、ソース ファイルのリストを指定します。タスクは、これらのビルド定義ファイルごとに、すべてのソース ファイルの絶対パスのリストを生成することです。

4

2 に答える 2

4

最初に絶対パスを取得してから、ワイルドカードに一致するディレクトリ内のファイルを列挙できます。

// input
string rootDir = @"c:\foo\bar"; 
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 );
于 2011-12-15T09:12:10.707 に答える
3

それは簡単です。

using System.IO;
      .
      .
      .
string[] files = Directory.GetFiles(@"c:\", "*.txt", SearchOption.TopDirectoryOnly);
于 2011-12-15T08:48:05.950 に答える