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.

  1. Siguiendo el ejemplo anterior borra las lineas de más de 100 caracteres
  2. Siguiendo el ejemplo anterior borra las lineas que comiencen por “a” de más de 100 caracteres
  3. Siguiendo el ejemplo anterior borra todas las lineas
  4. Haz un método que cuente las líneas de un fichero
  5. 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.

One Response to “ PHP.- Escritura en ficheros ”

  1. […] 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 […]

Deja un comentario