2012-06-17 7 views
7

Devo verificare se una directory è vuota. Il problema è che voglio considerare la directory vuota se contiene una sottocartella, indipendentemente dal fatto che la sottocartella contenga o meno i file. Mi interessa solo i file nel percorso che sto guardando. Questa directory sarà accessibile attraverso la rete, il che complicherà un po 'le cose. Quale sarebbe il modo migliore per farlo?Controllare se la directory non ha file, ma potrebbe contenere sottocartelle

risposta

24

L'overload del metodo Directory.EnumerateFiles(string) restituisce solo i file contenuti direttamente nella directory specificata. Non restituisce sottodirectory o file in esso contenuti.

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

Il vantaggio di EnumerateFiles sopra GetFiles è che l'insieme di file viene enumerato on-demand, il che significa che la query avrà successo non appena il primo file viene restituito (evitando in tal modo la lettura del resto dei file nel directory).

+0

che è perfetto, esattamente quello che mi serviva! Grazie Douglas. – Tharkis

+0

Per informazioni; Directory.EnumerateFiles (stringa) è stato aggiunto in .NET 4, quindi non funzionerà con le versioni precedenti di .NET. – tomRedox

7

Forse questo:

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