PHP.- Escritura en ficheros
La escritura en ficheros es un método análogo al de la escritura, existen dos funciones que nos ayudarán con esta labor: fputs y fwrite. Ambás tienen una sintaxis similar, deben recibir el apuntador al fichero y la cadena a escribir.
Tengamos en cuenta siempre la posición del cursor, fwrite o fputs escribirán siempre al final del fichero y dejarán el cursor al final del fichero. Por tanto no tiene sentido posicionar arriba para escribir por la parte del principio.
Si queremos hacer borrados o modificaciones de fichero en PHP seguiremos la técnica que se explica bajo el ejemplo.
Objeto completo para tratamiento de ficheros desde PHP
<!DOCTYPE html> <html lang="es"> <head> <meta charset="utf-8"/> <title>PHP manejo de fichero</title> </head> <body> <?php class gestor_fichero { private $fichero; public function abrir_crear($nombre,$modo) { $this->fichero=fopen($nombre,$modo); if ($this->fichero) return TRUE; else return FALSE; } public function posicionar($posicion) { fseek($this->fichero,$posicion); } public function leer_caracter() { return fgetc($this->fichero); } public function leer_linea() { return fgets($this->fichero); } public function escribir($cadena) { return fwrite($this->fichero,$cadena); } public function cerrar() { if (fclose($this->fichero)) return TRUE; else return FALSE; } } $f=new gestor_fichero; if ($f->abrir_crear("prueba","a+")) $f->escribir("Probando el escritor de textos\n"); $f->posicionar(0); while ($linea=$f->leer_linea()) echo "<p>$linea</p>"; $f->cerrar(); unset($f); ?> </body> </html>
Ejercicios
No hemos visto ninguna función para hacer borrados parciales. Vamos a hacer borrados parciales nosotros mismo usando el objeto anterior. Por ejemplo si queremos hacer una función que borre las líneas pares deberemos hacer lo siguiente:
$f=new gestor_fichero; $f->abrir_crear("prueba","a+"); $i=0; $resultado=NULL; while ($linea=$f->leer_linea()) { if ($i % 2==0) $resultado.=$linea; $i++; } $f->cerrar(); $f->abrir_crear("prueba","w+"); $f->escribir($resultado); $f->cerrar(); unset($f);
Para estos ejercicios puedes usar el fichero de las leyendas urbanas, o otros que ya hemos usado como el quijote.
- Siguiendo el ejemplo anterior borra las lineas de más de 100 caracteres
- Siguiendo el ejemplo anterior borra las lineas que comiencen por “a” de más de 100 caracteres
- Siguiendo el ejemplo anterior borra todas las lineas
- Haz un método que cuente las líneas de un fichero
- Usando el método anterior, modifica el escribir para que solamente escriba si tiene menos de 50 lineas
Originally posted 2011-03-13 19:26:29.
[…] una pequeña práctica usando dos clases que ya tenemos implementadas: La clase página y la clase gestor de ficheros. Los pasos que debemos seguir son los […]