Recorrido de ficheros en PHP

Para hacer un recorrido de ficheros en PHP lo primero que tenemos que hacer es abrir el fichero usando la clase anterior. Vamos a utilizar dos funciones para hacer la lectura de los fichero, la primera lee un sólo carácter fgetc($apuntador) y deja el cursor en el siguiente carácter, cuando llega al final devuelve FALSE.
Otra función para la lectura de ficheros es fgets($apuntador) retorna una línea y deja el cursor al final devolviendo FALSE al final.
Cada vez que leemos bien sea una línea o bien sea un carácter el cursor queda una posición más allá de donde estaba, por tanto cada vez que queremos volver a leer desde el principio deberemos situarnos al principio y para ello usaremos la función fseck($apuntador,$posicion). Donde $apuntador es el apuntador al fichero y $posición es la posición.
Vamos a insertar tres nuevos métodos a nuestra clase para que poder hacer estas operaciones, el primero será leer_caracter, el segundo leer_linea y un tercero será posicionar($posición)

<!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 cerrar()
		{
		if (fclose($this->fichero))
			return TRUE;
		else
			return FALSE;
		}
	}
	
$f=new gestor_fichero;
if ($f->abrir_crear("hablar","r+"))
	echo "<p>Apertura de lectura correcta</p>";
else
	echo "<p>Apertura de lectura incorrecta</p>";

echo "<p>";
while ($caracter=$f->leer_caracter())
	echo $caracter;
echo "</p>";

$f->posicionar(0);

while ($linea=$f->leer_linea())
	echo "<p>$linea</p>";

if ($f->cerrar())
	echo "<p>Fichero cerrado</p>";
else
	echo "<p>Error al cerrar</p>";

unset($f);
?>
</body>
</html>

Ejercicios

Sólo es necesario modificar la clase en el ejercicio número 4.

  1. Muestra solamente las “a”
  2. Convierte todas las “j” a mayúsculas, usaremos funciones del tema de cadenas
  3. Retorna los párrafos pares en mayúsculas sin retornar los impares
  4. Añade un método que retorne el número de caracteres del fichero, deberás ir leyendo uno a uno los caracteres y contando. Cuando acabes debes dejar el cursor al principio
  5. Usa el método anterior para leer los 10 últimos caracteres del fichero

Otros métodos para la lectura de ficheros

No debes olvidar que ya conocemos una forma de leer ficheros, se llama file($nombre). Con está función leemos un fichero sin necesidad de abrirlo no de cerrarlo. Además retorna un vector que contiene cada línea en una posición.

Originally posted 2011-03-10 20:09:41.

Deja un comentario