← PHP EspañolChapter 10 of 13

E/S de Archivos

## Objetivos de Aprendizaje - Leer y escribir archivos - Trabajar con rutas de archivos - Manejar operaciones de archivos de forma segura - Usar funciones de directorios ## Leyendo Archivos ### file_get_contents() ```php ``` ### file() - Leer en Arreglo ```php ``` ### fopen(), fread(), fclose() ```php ``` ### Modos de Lectura | Modo | Descripción | |------|-------------| | r | Solo lectura, comienza al inicio | | r+ | Leer y escribir, comienza al inicio | | w | Solo escritura, trunca/crea | | w+ | Leer y escribir, trunca/crea | | a | Solo escritura, append al final | | a+ | Leer y escribir, append al final | | x | Crear y escribir solo (falla si existe) | | x+ | Crear y leer/escribir (falla si existe) | ### fgets() - Leer Línea ```php ``` ### fgetc() - Leer Carácter ```php ``` ### feof() - Verificar Fin de Archivo ```php ``` ## Escribiendo Archivos ### file_put_contents() ```php ``` ### fwrite() con fopen() ```php ``` ### flock() - Bloqueo de Archivos ```php ``` ## Archivos CSV ### Leyendo CSV ```php ``` ### Escribiendo CSV ```php ``` ### Leyendo CSV con Encabezados ```php ``` ## Información de Archivos ### file_exists() ```php ``` ### is_file() vs is_dir() ```php ``` ### Stats de Archivos ```php ``` ### pathinfo() ```php /var/www/html/images // [basename] => photo.jpg // [extension] => jpg // [filename] => photo // Individual parts pathinfo($path, PATHINFO_DIRNAME); // /var/www/html/images pathinfo($path, PATHINFO_BASENAME); // photo.jpg pathinfo($path, PATHINFO_EXTENSION); // jpg pathinfo($path, PATHINFO_FILENAME); // photo ?> ``` ### realpath() ```php ``` ## Operaciones de Directorios ### Creando Directorios ```php ``` ### Leyendo Directorios ```php ``` ### Funciones de Directorios ```php ``` ### Iterador de Directorio (Enfoque Moderno) ```php isFile()) { echo $file->getFilename() . "\n"; } } // Recursive directory iterator $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator("src") ); foreach ($iterator as $file) { if ($file->isFile()) { echo $file->getPathname() . "\n"; } } ?> ``` ## Copiar, Mover, Eliminar Archivos ### Copiar ```php ``` ### Renombrar/Mover ```php ``` ### Eliminar ```php ``` ## Archivos Temporales ### tempnam() ```php ``` ### tmpfile() ```php ``` ## Serialización ### serialize() ```php "Alice", "age" => 25, "skills" => ["PHP", "MySQL"] ]; $serialized = serialize($data); // a:3:{s:4:"name";s:5:"Alice";s:3:"age";i:25;s:6:"skills";a:2:{i:0;s:3:"PHP";i:1;s:5:"MySQL";}} file_put_contents("data.txt", $serialized); ?> ``` ### unserialize() ```php Alice [age] => 25 [skills] => Array ( [0] => PHP [1] => MySQL ) ) // Warning: Never unserialize untrusted data! ?> ``` ### JSON como Alternativa ```php "Alice", "age" => 25]; $json = json_encode($data); file_put_contents("data.json", $json); $loaded = json_decode(file_get_contents("data.json"), true); ?> ``` ## Manejo de Errores ### Errores de Archivos ```php ``` ### Manejador de Errores Personalizado ```php ``` ## Resumen - `file_get_contents()` lee archivo completo; `file()` lee en arreglo - `fopen()`, `fgets()`, `fread()`, `fwrite()`, `fclose()` para control detallado - `file_put_contents()` escribe archivo; `fwrite()` con `fopen()` - Modos: `r`, `r+`, `w`, `w+`, `a`, `a+`, `x`, `x+` - Usa `flock()` para bloqueo de archivos - `fgetcsv()` y `fputcsv()` para archivos CSV - `file_exists()`, `is_file()`, `filesize()`, `filemtime()` para info de archivos - `mkdir()`, `rmdir()`, `scandir()`, `glob()` para directorios - `copy()`, `rename()`, `unlink()` para operaciones de archivos - `tempnam()` y `tmpfile()` para archivos temporales - `serialize()`/`unserialize()` para almacenamiento de datos específico de PHP - `json_encode()`/`json_decode()` para datos entre lenguajes

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →