2012-06-17 5 views
7

Necesito verificar si un directorio está vacío. El problema es que quiero considerar el directorio vacío si contiene una subcarpeta independientemente de si la subcarpeta contiene o no archivos. Solo me importan los archivos en el camino que estoy viendo. Se accederá a este directorio a través de la red, lo que complica un poco las cosas. ¿Cuál sería la mejor manera de hacerlo?Compruebe si el directorio no tiene archivos, pero puede contener subcarpetas

Respuesta

24

La sobrecarga del método Directory.EnumerateFiles(string) solo devuelve los archivos que contienen directamente dentro del directorio especificado. No devuelve ningún subdirectorio o archivo contenido en él.

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

La ventaja de EnumerateFiles sobre GetFiles es que la colección de archivos se enumera en la demanda, lo que significa que la consulta tendrá éxito tan pronto como se devuelve el primer archivo (evitando de esta manera la lectura del resto de los archivos en el directorio).

+0

Eso es perfecto, exactamente lo que necesitaba! Gracias Douglas. – Tharkis

+0

Para obtener información; Directory.EnumerateFiles (cadena) se agregó en .NET 4, por lo que no funcionará en versiones anteriores de .NET. – tomRedox

7

Tal vez esto:

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