Trabajo con el sistema de archivos en PHP: funciones y ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con el sistema de archivos en PHP: funciones principales y ejemplos



Trabajar con el sistema de archivos es una de las tareas clave del desarrollo web. PHP proporciona un conjunto potente y flexible de funciones para crear, leer, escribir, eliminar archivos y carpetas, así como para gestionar los permisos de acceso. En este artículo, analizaremos las principales capacidades de PHP para trabajar con el sistema de archivos, proporcionaremos ejemplos prácticos y consideraremos errores típicos.



1. Lectura de archivos en PHP



PHP admite varias formas de leer datos de archivos. La elección del método depende del tamaño del archivo y del nivel de control requerido.



1.1. Función file_get_contents()

La forma más sencilla de leer un archivo completo en una cadena es usar file_get_contents(). Esta función es adecuada para archivos pequeños (configuraciones, plantillas).



<?php// Lectura de todo el archivo en una cadena$content = file_get_contents('data.txt');if ($content !== false) {    echo "Contenido del archivo: " . htmlspecialchars($content);} else {    echo "Error al leer el archivo";}?>


1.2. Función file()

Si necesita obtener el contenido del archivo como un array de líneas (una línea por elemento), use file().



<?php$lines = file('log.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);foreach ($lines as $lineNum => $line) {    echo "Línea " . ($lineNum + 1) . ": " . htmlspecialchars($line) . "<br>";}?>


1.3. Lectura línea por línea con fopen() + fgets()

Para archivos grandes (por ejemplo, registros), es mejor usar la lectura en flujo para no mantener todo el archivo en la memoria.



<?php$handle = fopen('large_file.csv', 'r');if ($handle) {    while (($buffer = fgets($handle, 4096)) !== false) {        echo $buffer . "<br>";    }    fclose($handle);} else {    echo "No se pudo abrir el archivo";}?>


2. Escritura de datos en archivos



La escritura también se puede realizar de diferentes maneras. La principal diferencia es sobrescribir el archivo o agregar al final.



2.1. Función file_put_contents()

Una forma rápida de escribir una cadena en un archivo. Si el archivo no existe, se creará. Por defecto, el archivo se sobrescribe.



<?php$data = "Nuevo registro: " . date('Y-m-d H:i:s') . "";// Sobrescribir el archivofile_put_contents('log.txt', $data);// Agregar al final (bandera FILE_APPEND)file_put_contents('log.txt', $data, FILE_APPEND);?>


2.2. Escritura manual a través de fopen() + fwrite()

Para un control preciso (por ejemplo, bloqueo de archivos), use el par fopen() / fwrite().



<?php$filename = 'counter.txt';$handle = fopen($filename, 'c+'); // 'c+' — crea el archivo si no existeif (flock($handle, LOCK_EX)) { // bloqueo exclusivo    $current = (int) fread($handle, filesize($filename) ?: 1);    $current++;    ftruncate($handle, 0); // limpiamos el archivo    rewind($handle);    fwrite($handle, $current);    flock($handle, LOCK_UN); // liberamos el bloqueo}fclose($handle);echo "Contador: $current";?>


3. Trabajo con directorios



PHP no solo permite gestionar archivos, sino también crear, eliminar y explorar carpetas.



3.1. Creación de carpetas (mkdir)

<?php// Crear una carpetaif (!is_dir('uploads')) {    mkdir('uploads', 0755);}// Creación recursiva de carpetas anidadas (PHP 5.4+)mkdir('images/2024/12', 0755, true);?>


3.2. Eliminación de carpetas (rmdir)

rmdir() solo elimina una carpeta vacía. Para eliminar una carpeta con todo su contenido, se necesita una función recursiva.



<?phpfunction deleteDirectory($dir) {    if (!file_exists($dir)) {        return true;    }    if (!is_dir($dir)) {        return unlink($dir);    }    $items = array_diff(scandir($dir), ['.', '..']);    foreach ($items as $item) {                

Blogs

Book Recommendations