Trabajo con el sistema de archivos en PHP: de lo básico a proyectos reales
\n\nTrabajar con el sistema de archivos es una de las tareas clave de cualquier desarrollador web. En PHP, existe un potente conjunto de funciones integradas que permiten crear, leer, editar y eliminar archivos, así como gestionar directorios. En este artículo, analizaremos ejemplos prácticos que te ayudarán a dominar el trabajo con archivos en PHP y aplicar estos conocimientos en proyectos reales.
\n\nIndependientemente de si estás creando un sistema de registro, un cargador de archivos o simplemente guardando datos de usuarios, comprender los fundamentos del sistema de archivos en PHP es una habilidad obligatoria. Pasemos a la práctica.
\n\nFunciones principales para trabajar con archivos
\n\nPHP proporciona varias formas de interactuar con archivos. Las más populares son el uso de fopen, fwrite, fread y las funciones de alto nivel file_get_contents y file_put_contents. Veámoslas con ejemplos.
Creación y escritura en un archivo
\n\nPara crear un archivo y escribir en él, usa la función fopen con el modo 'w' (escritura con borrado) o 'a' (añadir al final).
<?php\n$filename = 'log.txt';\n$file = fopen($filename, 'w');\n\nif ($file) {\n fwrite($file, "Línea 1: Escritura en el archivo\\n");\n fwrite($file, "Línea 2: Otra escritura\\n");\n fclose($file);\n echo "Archivo creado y escrito exitosamente.";\n} else {\n echo "Error al abrir el archivo.";\n}\n?>\n\nSi necesitas escribir datos rápidamente sin gestionar el puntero, usa file_put_contents:
<?php\n$data = "Nuevo contenido para el archivo.\\nSegunda línea.";\nfile_put_contents('data.txt', $data);\necho "Datos escritos.";\n?>\n\nLectura de un archivo
\n\nPara leer un archivo línea por línea, usa fgets en un bucle:
<?php\n$file = fopen('log.txt', 'r');\nif ($file) {\n while (($line = fgets($file)) !== false) {\n echo $line . "<br>";\n }\n fclose($file);\n}\n?>\n\nAlternativa: file_get_contents para leer todo el contenido en una cadena:
<?php\n$content = file_get_contents('log.txt');\necho nl2br($content);\n?>\n\nVerificación de existencia y propiedades de archivos
\n\nAntes de trabajar con un archivo, es importante asegurarse de que existe y es accesible para lectura o escritura. PHP proporciona las funciones file_exists, is_readable, is_writable y filesize.
Ejemplo de verificación de archivo
\n\n<?php\n$file = 'config.php';\n\nif (file_exists($file)) {\n echo "El archivo existe.<br>";\n \n if (is_readable($file)) {\n echo "El archivo es legible.<br>";\n echo "Tamaño del archivo: " . filesize($file) . " bytes.";\n } else {\n echo "El archivo existe, pero no es legible.";\n }\n} else {\n echo "Archivo no encontrado.";\n}\n?>\n\nVerificación del tipo de archivo
\n\nLa función filetype devuelve el tipo de archivo: 'file', 'dir', 'link' y otros.
<?php\n$path = 'uploads';\nif (file_exists($path)) {\n echo "Tipo: " . filetype($path); // mostrará 'dir' si es una carpeta\n}\n?>\n\nGestión de directorios
\n\nTrabajar con carpetas en PHP no es menos importante. Puedes crear, eliminar y escanear directorios.
\n\nCreación y eliminación de carpetas
\n\n<?php\n// Crear carpeta\nif (!file_exists('backup')) {\n mkdir('backup', 0777, true); // el tercer parámetro true — creación recursiva\n echo "Carpeta creada.";\n}\n\n// Eliminar carpeta vacía\nif (file_exists('temp')) {\n rmdir('temp');\n echo "Carpeta eliminada.";\n}\n?>\n\nEscaneo del contenido de un directorio
\n\nLa función scandir devuelve un array con todos los archivos y carpetas