0

dirPowershell のコマンド (としても知られる)と同様に、相対パスとワイルドカードを使用してフォルダーをクエリするための .NET の組み込み機能を探していますls。私が覚えている限りでは、Powershell は .NET オブジェクトの配列を返しますDirectoryInfoFileInfoこれは後で処理に使用できます。入力例:

..\bin\Release\XmlConfig\*.xml

FileInfoは、いくつかの XML ファイルに変換されます。

.NET にそのようなものはありますか?

4

2 に答える 2

2

System.IO.Directoryその機能を提供する静的クラスです。

たとえば、あなたの例は次のようになります。

using System.IO;

bool searchSubfolders = false;
foreach (var filePath in Directory.EnumerateFiles(@"..\bin\Release\XmlConfig",
                                                  "*.xml", searchSubfolders))
{
    var fileInfo = new FileInfo(filePath); //If you prefer
    //Do something with filePath
}

より複雑な例は次のとおりです\

var searchPath = @"c:\appname\bla????\*.png";
//Get the first search character
var firstSearchIndex = searchPath.IndexOfAny(new[] {'?', '*'});
if (firstSearchIndex == -1) firstSearchIndex = searchPath.Length;
//Get the clean part of the path
var cleanEnd = searchPath.LastIndexOf('\\', firstSearchIndex);
var cleanPath = searchPath.Substring(0, cleanEnd);
//Get the dirty parts of the path
var splitDirty = searchPath.Substring(cleanEnd + 1).Split('\\');

//You now have an array of search parts, all but the last should be ran with Directory.EnumerateDirectories.
//The last with Directory.EnumerateFiles
//I will leave that as an exercise for the reader.
于 2013-02-04T22:13:26.763 に答える
2

DirectoryInfo.EnumerateFileSystemInfosAPIを使用できます。

var searchDir = new DirectoryInfo("..\\bin\\Release\\XmlConfig\\");
foreach (var fileSystemInfo in searchDir.EnumerateFileSystemInfos("*.xml"))
{
    Console.WriteLine(fileSystemInfo);
}

このメソッドは、とFileSystemInfoの基本クラスである のシーケンスとして結果をストリーミングします。FileInfoDirectoryInfo

于 2013-02-04T22:21:51.620 に答える