今日は同じ問題が発生しました。私は次のコードを一緒にハッキングしました。実際の製品で使用する場合は、エラー処理を改善する必要があります。これはワンショットスクリプトのためであり、私はあまり気にしなかった。
static IEnumerable<string> EnumerateFilesRecursive(string root,string pattern="*")
{
var todo = new Queue<string>();
todo.Enqueue(root);
while (todo.Count > 0)
{
string dir = todo.Dequeue();
string[] subdirs = new string[0];
string[] files = new string[0];
try
{
subdirs = Directory.GetDirectories(dir);
files = Directory.GetFiles(dir, pattern);
}
catch (IOException)
{
}
catch (System.UnauthorizedAccessException)
{
}
foreach (string subdir in subdirs)
{
todo.Enqueue(subdir);
}
foreach (string filename in files)
{
yield return filename;
}
}
}
あなたがいずれかのことができ、それを使用するには:最初のメモリ内のすべてのファイル、店舗すべてのファイル名を列挙し、だけにして、それらを表示する
string[] files = EnumerateFilesRecursive(@"C:\").ToArray();//Note the ToArray()
foreach (string file in files)
{
Console.WriteLine(file);
}
を。または、次のように指定することもできます。
列挙中に書き込みを行うため、すべてのファイル名を同時にメモリに保存する必要はありません。
あなたのコードを共有していただきありがとうございます。私はそれを動作させる方法を解決することはできません、私はC#で非常に経験はありません。私は、文字列のルートと文字列パターンがargsになると仮定してメソッドを呼び出そうとしましたが、幸運にも、私はConsole.WriteLine()でコンソールに出力したいだけです。ありがとう! –
私はあなたに+100を与えることができたらいいなあ!それは完璧に働いた、ありがとう! –