Como saber si una carpeta está vacía con PHP

En este artículo vamos a averiguar como saber si una carpeta o directorio está vacío o tiene elementos (subcarpetas o archivos) con PHP.

Para saber si un directorio existe tendremos que crear la siguiente condicional:

if (is_dir('folder')) {
   //código
}

La función is_dir() indica si el elemento pasado por parámetro es un directorio o no. Retorna TRUE si es un directorio y FALSE si no lo es.

Para saber si el directorio que estamos tratando tiene archivos dentro deberemos escanearlo. PHP dispone de una función muy potente que te retorna los elementos del directorio en un array.

En el código que vamos a ver a continuación veremos un ejemplo más completo

//Si es un directorio
if (is_dir('folder')) {
    //Escaneamos el directorio
    $carpeta = @scandir('folder');
    //Miramos si existen archivos
    if (count($carpeta) > 2){
        echo 'El directorio tiene archivos';
        //Miramos si existe el archivo pasado como parámetro
        if (file_exists('folder/index.php')) 
            echo 'El archivo existe';
        else
            echo 'El archivo no existe';
    }else{
        echo 'El directorio está vacío';
    }
}
else {
    echo 'El directorio no existe.';
}

En el código de ejemplo estamos haciendo varias cosas, primero miramos si el elemento que estamos tratando es un directorio y si lo es escaneamos su contenido con la función scandir(). Comprobamos que haya elementos con count($carpeta) > 2, evitando los elementos que debemos ignorar «./» y «../» y ya dentro miramos si existe un archivo indicado con la función file_exists().

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(3 votos, promedio: 4 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

2 respuestas a “Como saber si una carpeta está vacía con PHP”

  1. René dice:

    Excelente. Muchas gracias. He llegado hasta aquí, buscando una manera de saber si una carpeta en Windows tiene archivos o no. Se me ocurría algo así: como un punto de color o un tilde, que dijera que esa carpeta al menos tiene un archivo o fichero u otras carpetas con contenido, y un ícono de carpeta normal, si estuviera vacía de archivos o carpetas con contenido a su vez. Tengo un montón de alumnos en una cantidad de carpetas organizadas, donde coloco trabajos a medida van llegando, y luego, una vez he descargado todo, rastreo los trabajos para corregirlos, y tengo que ir carpeta por carpeta viendo si tiene algo o no, cuando, si pudiera ver si un alumno tiene contenidos en su carpeta, me permitiera ingresar directamente a la carpeta en cuestión. Creo que Linux, OSX y otros sistemas operativos lo permiten, pero Windows, no. Al menos no directamente. A lo mejor exista un plugin que permita esto. Sigo buscando. Cuanlquier ayuda o información en éste sentido será agradecida

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre