2012-01-10 11 views

答えて

117

あなたはDirectoryInfo.EnumerateFiles functionを使用することができます。

var dir = new DirectoryInfo(directoryPath); 

foreach (var file in dir.EnumerateFiles("f*.txt")) { 
    file.Delete(); 
} 

(もちろん、あなたはおそらく、エラー処理を追加することをお勧めします。)

8

Directory.GetFilesメソッドをワイルドカードオーバーロードで使用できます。これはあなたのパターンに合ったすべてのファイル名を返します。これらのファイルを削除することができます。

33

私は、これはすでに答えて良い答えをされている知っているが、 .NET 4.0以上で代替があります。です。したがって、Directory.EnumerateFiles()を使用します。 - 時間の99.9%が素晴らしいある

foreach (string f in Directory.EnumerateFiles(myDirectory,"f*.txt")) 
{ 
    File.Delete(f); 
} 

DirectoryInfo.GetFiles()の欠点は、ファイルのリストを返すということです。欠点は、フォルダに何万ものファイルが含まれている(まれである)場合、非常に遅くなり、一致するファイルを列挙する方がはるかに高速です。

+2

'DirectoryInfo'には' EnumerateFiles() 'もあります。 – TrueWill

+3

この回答がなぜ受け入れられた回答と非常に似ているのか不思議に思う人は、受け入れられた回答がこれに照らして書き直されたからです。以前のバージョンの.NETでこれを行うための唯一の方法は、元の回答である 'DirectoryInfo.GetFiles()'を使うことなので、残念です。 –

関連する問題