Manejo de directorios con PHP

En PHP existen muchas funciones para el manejo de directorios (carpetas) y sus contenidos.

En esta ocasión nos centraremos en listar directorios y a su vez sus contenidos de manera recursiva, ya que nos sabemos que puede contener (la conocida estructura de árbol).

Aqui les listo las funciones de PHP que vamos a utilizar:


El funcionamiento sería el siguiente:

La función recibe una ruta. Por ejemplo, si queremos que liste los directorios de la carpeta donde está el archivo la llamaríamos con:

  1. listar_directorios_ruta("./");   

Lo primero que se hace es comprobar si la ruta recibida es un directorio.

  1. if (is_dir($ruta)) { //... }  

Si lo es realizaremos las acciones, pero si no lo es, mostraremos un mensaje diciendo que no es una ruta válida.

En el siguiente if extraemos el gestor de directorio y lo guardamos en una variable $dh

  1. if ($dh = opendir($ruta))   

Con un bucle while recorreremos cada elemento de ese directorio.

  1. while (($file = readdir($dh)) !== false)   

Dentro del bucle hacemos un if para saber si el elemento es un directorio

  1. if (is_dir($ruta . $file) && $file!="." && $file!="..")   

En caso que sea un directorio, simplemente escribimos en la página. Además, tenemos que ver si ese directorio contiene a su vez otros directorios. Para eso llamamos a la función de nuevo pasándole ese nuevo directorio. Así la función se llama a si misma para mostrar todo el árbol de carpetas.

Por último se cierra el gestor de directorio abierto previamente.


Con lo que nuestra función quedaría de la siguiente manera:

  1. function listar_directorios($ruta){   
  2.    // abrir un directorio y listarlo recursivo   
  3.    if (is_dir($ruta)) {   
  4.       if ($dh = opendir($ruta)) {   
  5.          while (($file = readdir($dh)) !== false) {   
  6.             //esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio   
  7.             //mostraría tanto archivos como directorios   
  8.             echo "Nombre de archivo: $file : Es un: " . filetype($ruta . $file);   
  9.             if (is_dir($ruta . $file) && $file!="." && $file!=".."){   
  10.                //solo si el archivo es un directorio, distinto que "." y ".."   
  11.                echo "Directorio: $ruta$file";   
  12.                listar_directorios_ruta($ruta . $file . "/");   
  13.             }   
  14.          }   
  15.       closedir($dh);   
  16.       }   
  17.    }else   
  18.       echo "No es ruta valida";   
  19. }   

Saludos y que lo disfruten!

Bookmark and Share

1 comentarios:

Unknown dijo...

epale le cambiaste el nombre a la funcion listar_directorios_ruta y es function listar_directorios gracias por la ayuda!

Publicar un comentario