Otra semana más, aquí tenéis nuestro particular curso de PHP. Se acerca el fin de año pero en Redeszone no paramos, hoy toca jugar un poco con PHP.
El pasado Miércoles nos quedamos abriendo ficheros , vamos a ampliar nuestros conocimientos sobre el tema aprendiendo a leer y a escribir archivos.
Vamos primero a ver como se escriben archivos para posteriormente leerlos.
Antes de empezar , es recomendable leer de nuevo el volumen anterior para repasar las formas de apertura con fopen de los ficheros.
Escritura de ficheros.
Para escribir un fichero en PHP, lo primero que necesitamos hacer es abrir el fichero como hacíamos en el volumen anterior.
Una vez abierto, usaremos fputs() que en realidad es un alias de fwrite().
fputs(), recibe como argumentos lo primero el descriptor de fichero devuelto por fopen en la apartura, en segundo lugar recibe la cadena que va a ser escrita, en tercer y ultimo lugar , opcionalmente recibe una cantidad(length) que lo que hace es detener la función cuando se alcance el la cantidad especificada de datos escrita .
Un ejemplo:
Lectura de ficheros
Para leer un fichero , al igual que para escribirlo hay que abrirlo, aunque antes es conveniente comprobar si existe, para ello podemos usar file_exist().
Una vez abierto , vamos a usar fread() para leer los datos contenidos en el fichero.
fread() recibe como argumentos un descriptor de fichero una cantidad a leer. Si se especifica cantidad mayor al tamaño del fichero, generalmente fread() termina de leer en EOF(End of file), aunque también puede parar por otro tipo de eventos que quizá comentemos más adelante en el curso.
Por ultimo decir que la cadena leída es devuelta por fread().
Ejemplo:
Existen otras funciones para leer ficheros como por ejemplo fgetc() que obtiene un carácter desde donde esta situado el puntero del fichero en ese momento, después de leer avanza el puntero.
La función recibe el descriptor de fichero.
Cuestiones relacionadas con la situación del puntero en el fichero.
Como comentamos en el volumen anterior, cuando abrimos un fichero, estamos situando un puntero en un determinado lugar del fichero, y ese puntero será el encargado de decirnos desde donde vamos a empezar a operar sobre el fichero. Es decir desde que parte del fichero vamos a empezar a ejecutar los cambios.
En esta parte del volumen vamos a ver cosas relacionadas con el puntero del fichero y vamos a aprender a movernos con el puntero por el fichero, volver al principio, establecerlo al final etc.
La función de mayor importancia en esta parte del volumen es fseek(), la cual permite situar el puntero en el lugar donde nosotros queramos. La función recibe 3 argumentos que son los siguientes:
El primero es el descriptor de archivo (valor devuelto por fopen()).
El segundo es la cantidad de posiciones que queremos avanzar.
El tercero es la posición desde la que se avanza, pudiendo ser :
SEEK_SET – Inicio de fichero
SEEK_CUR – Posición actual
SEEK_END – Final de fichero
Otra función que nos será útil a la hora de movernos por los ficheros es la función rewind() que sitúa el puntero en el inicio del fichero. La función recibe como argumento el descriptor del fichero.
Ejercicio: Intentad leer a partir del carácter 16 de un texto 5 posiciones, luego leer el carácter 20 usando para moverse por el fichero fseek().
Nota: Si no hacéis el ejercicio realmente no pasa nada, ya que nadie os está evaluando, solo proporcionándoos algo de información, no hay ejemplos de fseek() precisamente para que podáis investigar o preguntar aquí sobre ello mientras hacéis el ejercicio.
Nota2: El fichero tiene que contener mas de 20 caracteres.
Nota3: Importante:En Linux pueden aparecer problemas a la hora de crear/modificar ficheros, si os aparece un error del tipo permiso denegado, tendréis que cambiar los permisos de la carpeta (en la que estáis creando el fichero, generalmente donde estáis haciendo las pruebas) para que «otros» puedan escribir en ella.
Por hoy hemos terminado, la próxima seguiremos con PHP, y antes de empezar el nuevo volumen la solución/ejemplo del ejercicio.