7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

Cómo obtener una lista de los archivos de un directorio en PHP

Read Time: 5 mins

Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)

En este artículo analizaremos cómo puedes obtener una lista de todos los archivos de un directorio en PHP.

En tu desarrollo cotidiano con PHP, a menudo necesitas trabajar con un sistema de archivos, por ejemplo, para obtener una lista de archivos contenidos en un directorio específico. PHP proporciona algunos métodos diferentes que puedes usar para leer fácilmente el contenido de los directorios. Hoy analizaremos todos estos métodos junto con ejemplos, para entender cómo funciona cada uno.

Las funciones opendirreaddir y closedir

En esta sección, discutiremos una familia de funciones opendirreaddir y closedir para ver cómo puedes usarla con el fin de obtener una lista de archivos de un directorio específico.

La función opendir te permite abrir un manejador de directorio, el cual puedes usar junto con otras funciones para realizar diferentes operaciones en él. Necesitas enviar la ruta al directorio en el primer argumento de la función opendir. Si la ruta del directorio es válida, un recurso de manejador de directorio será devuelto.

La función readdir te permite leer un directorio. Necesitas proporcionar un directorio válido en el primer argumento de la función readdir, y puedes recorrer todas las entradas y obtener una lista de todos los archivos contenidos en un directorio.

La función closedir te permite cerrar el manejador de directorio abierto por la función opendir. Es una buena práctica usar la función closedir una vez que hayas terminado con tus operaciones en el manejador de directorio (que la función opendir abrió inicialmente).

Ahora veámoslo en acción, como se muestra en el siguiente ejemplo.

En primer lugar, hemos usado la función opendir para obtener el manejador de directorio. A continuación, hemos usado la función readdir para recorrer el manejador de directorio $handle y almacenar una lista de archivos en la matriz $arrFiles.

La función scandir

En esta sección veremos cómo puedes usar la función scandir para obtener el contenido de un directorio.

La función scandir es una manera bastante sencilla de obtener una lista de archivos y directorios contenidos en un directorio específico. Solamente necesitas enviar la ruta de un directorio que quieras leer como primer argumento de la función scandir.

Analicemos el siguiente ejemplo para entender cómo funciona.

Como puedes ver, esto proporciona una lista de archivos y directorios ¡en una sola llamada! Si solamente necesitas obtener la lista de archivos de un directorio, esta es una mejor opción que el uso de opendir, readdir y closedir.

La función glob

La función glob trabaja de manera similar a la función scandir, con la diferencia de que te permite especificar un patrón para filtrar y hacer coincidir los archivos del directorio.

Veamos cómo usar la función glob para leer todo el contenido de un directorio específico.

Como puedes ver, hemos enviado el patrón *, ya que queremos leer todo el contenido. Por otro lado, si quieres enumerar solamente tipos específicos de archivos, puedes hacer eso también, como se muestra en el siguiente fragmento de código.

En este caso, $arrFiles solamente contendría los nombres de los archivos .txt.

La función dir

Las opciones que hemos discutido hasta ahora te permite leer el contenido de los directorios de una manera procedimental. En esta sección veremos cómo puedes usar la función dir, que es un mecanismo orientado a objetos para la lectura de un directorio.

Cuando usas la función dir y envías la ruta de un directorio como primer argumento, esta función devuelve una instancia de la clase Directory, la cual puedes usar posteriormente para leer el contenido del directorio.

Analicemos el siguiente ejemplo para ver cómo funciona exactamente.

Primero usamos la función dir para inicializar una instancia de la clase Directory en la variable $objDir. A continuación usamos el método read de la clase Directory para recorrer todas las entradas.

La clase FilesystemIterator

En esta sección veremos cómo puedes usar la clase FilesystemIterator para leer el contenido de un directorio. El beneficio de usar la clase FilesystemIterator es que puedes extender los métodos de esta clase, y también proporciona muchos otros métodos útiles que también te permiten obtener información diversa sobre los archivos.

Revisemos el siguiente ejemplo para entender cómo funciona.

Como puedes ver, es verdaderamente sencillo usar la clase FilesystemIterator y recorrer las entradas. En el ejemplo anterior, hemos usado el método getFileName de la clase FilesystemIterator para obtener el nombre de archivo. Sin embargo, la clase FilesystemIterator también proporciona varios métodos de utilidad, como getExtensiongetSizegetPathname, entre otros.

Y así es como puedes usar la clase FilesystemIterator para obtener una lista de los archivos de un directorio.

Conclusión

Hoy analizamos diferentes métodos que puedes usar para obtener una lista de todos los archivos contenidos en un directorio en PHP. Aquí hay una tabla para comparar cada método y así ayudarte a elegir el adecuado para ti.

Función o clase Notas
Funciones opendirreaddir y closedir No es el método más sencillo ni el más abundante en funciones
Función scandir La manera más sencilla de leer una lista de archivos
Función glob Muy sencilla y permite la comparación de patrones
Función dir La versión orientada a objetos de readdir
Clase FilesystemIterator Puede proporcionar información adicional sobre los archivos, como su tamaño o permisos
Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.