2012-06-17 5 views
7

ディレクトリが空であるかどうかを確認する必要があります。問題は、サブフォルダにファイルが含まれているかどうかにかかわらずサブフォルダが含まれている場合、ディレクトリを空にすることです。私は見ているパスのファイルだけを気にします。このディレクトリはネットワーク上でアクセスされますが、これは少し複雑です。これについて最善の方法は何でしょうか?ディレクトリにファイルがないのにサブフォルダが含まれているかどうかを確認してください。

答えて

24

Directory.EnumerateFiles(string)メソッドオーバーロードは、指定されたディレクトリ内のに直接を含むファイルのみを返します。そこに含まれるサブディレクトリやファイルは返されません。

bool isEmpty = !Directory.EnumerateFiles(path).Any(); 

EnumerateFilesGetFiles以上の利点は、ファイルのコレクションは、クエリは、すぐに最初のファイルが返されると成功することを意味し、オンデマンドで列挙されていることである(それによって、内のファイルの残りの部分を読んで回避ディレクトリ)。

+0

、私がまさに必要!ありがとうダグラス。 – Tharkis

+0

情報用。 Directory.EnumerateFiles(文字列)は.NET 4に追加されているため、古いバージョンの.NETでは動作しません。 – tomRedox

7

はおそらく、この:完璧です

if (Directory.GetFiles(path).Length == 0)...... ;