10.ut8 ficheros y directorios_1_php

30
U.T. 8: Recuperación y utilización de información.

Upload: xavier-macineira-lopez

Post on 14-Jul-2016

13 views

Category:

Documents


0 download

DESCRIPTION

Apuntes de manejo de ficheros php

TRANSCRIPT

Page 1: 10.UT8 Ficheros y Directorios_1_php

U.T. 8: Recuperación y utilización de información.

Page 2: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios PHP permite guardar y recuperar información a través de los ficheros,

para lo cual dispone de funciones y procedimientos para acceder a los mismos y a su información, así como para crearlos, destruirlos, modificar su contenido,… PHP también puede tratar carpetas o directorios.

Un fichero Es un almacén de datos en dispositivos externos Convierte los datos en persistentes al final de los programas

Tipos de ficheros: TEXTOS:

La información se almacena en ASCII, es legible mediante editores, los datos requieren separadores (‘ ’, ‘\n’, ‘\t’,’\r\n’)

BINARIOS: La información es binaria, NO es legible mediante editores, los datos NO

requieren separadores

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 3: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios Las operaciones sobre ficheros suelen constar de tres

fases: Apertura del fichero

Se abre el fichero, indicando si se realizarán operaciones para leer, escribir o añadir al final del mismo.

La operación devuelve un descriptor de fichero que se usará en el resto de funciones.

Procesamiento del fichero Lectura Escritura.

Cierre del fichero.

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 4: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios Se puede comprobar si el fichero existe

file_exists() Determina si existe un archivo o directorio

dawa49
Resaltado
Page 5: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.Apertura fopen()

nombre_fichero: local o remoto (“http://” o “ftp://”)

modo: ‘r’ abre el archivo en modo sólo lectura, colocando el puntero del archivo al

principio del mismo. El archivo debe existir. ‘r+’ abre el archivo en modo lectura y escritura, colocando el puntero del archivo

al principio del mismo. ‘w’ abre el archivo en modo sólo escritura, colocando el puntero del archivo al

principio del mismo. Si el archivo no existe, lo crea, y si existe, su contenido será borrado.

‘w+’ abre el archivo en modo escritura y lectura. Si el archivo no existe, lo crea, y si existe, su contenido será borrado.

‘a’ abre el archivo en modo sólo escritura, colocando el puntero del archivo al final del mismo; si el archivo no existe será creado.

‘a+’ abre el archivo en modo de agregar información y además leerlo. Los datos que se ingresen se agregarán al final del mismo, sin eliminar el contenido que tuviera. En este modo, si el archivo no existe, lo creará en ese momento.

‘x’, ‘x+’ Igual que w, w+ pero evitando la creación si el fichero existe. ‘c’, ‘c+’ Igual que w , w+ pero sin truncar el fichero cuando ya existe.

http://es.php.net/manual/es/function.fopen.php

fopen( nombre_fichero, modo, include_path)

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 6: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre. Nota: Diferentes familias de sistemas operativos tienen diferentes convenciones para el final de línea. Cuando escribe un fichero de texto y quiere insertar un salto de línea, necesita usar el carácter o caracteres correctos de final de línea para su sistema operativo. Los sistemas basados en Unix usan \n como el carácter de final de línea, los sistemas basados en Windows usan \r\n como caracteres de final de línea y los sistemas basados en Macintosh usan \r como carácter de final de línea. Si usa los caracteres de final de línea erróneos cuando escribe sus ficheros, se podrá encontrar con que otras aplicaciones que abran esos ficheros "parecerán raras". Windows ofrece una bandera de traducción en modo texto ('t') que traducirá de manera transparente \n a \r\n cuando se trabaja con el fichero. En contraste, puede usar 'b' para forzar el modo binario, lo cual no traducirá su información. Para usar estas banderas, especifique 'b' o 't' como el último carácter del parámetro mode. El modo de traducción predeterminado depende de la SAPI y de la versión de PHP que esté usando, por lo que se le anima a especificar siempre la bandera apropiada por razones de portabilidad. Debería usar el modo 't' si está trabajando con ficheros de texto plano y usa \n para delimitar los finales de línea en su script, pero confíe que sus ficheros serán legibles por aplicaciones tales como notepad. Debería usar 'b' en los demás casos. Si no especifica la bandera 'b' cuando está trabajando con ficheros binarios, puede experimentar problemas extraños con su información, incluidos ficheros imagen rotos o problemas extraños con los caracteres \r\n.

Page 7: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre. Include_path especifica la lista de directorios donde las

funciones require, include, fopen(), file(), readfile() y  file_get_contents() buscarán ficheros. 

Include_path = true -> el fichero debe buscarse en las rutas establecidas en la directiva include_path de php.ini. Ejemplo en Windows: include_path=".;c:\php\includes" Ejemplo en Unix: include_path=".:/php/includes“

fopen() Permite abrir un fichero para trabajar con él. Al ejecutarse,

comprueba si el fichero existe. Devuelve un identificador que se emplea en el resto de funciones

(o FALSE en caso de error)

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 8: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.¿Para qué sirve el puntero que devuelve fopen()?

Define un canal a través del cual se accede al fichero. Desde que el fichero está abierto se trabaja con el puntero. Cuando se abre el fichero, el puntero se coloca al principio del

fichero para esperar instrucciones. Ejemplos:

Apertura para lectura$fichero = fopen("datos.txt", 'rb');

Apertura para escritura silenciando errores con @ (Si la apertura falla, se genera un error de nivel E_WARNING. Se usa @ para suprimir esta advertencia.)

$fichero = @fopen("datos.txt", 'wb'); Apertura para añadir, silenciando errores

$fichero = @fopen("datos.txt", 'ab');

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 9: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre. Más ejemplos:

$gestor = fopen("/home/rasmus/fichero.txt", "r"); $gestor = fopen("/home/rasmus/fichero.gif", "wb"); $gestor = fopen("http://www.example.com/", "r");

Se abre una conexión hacia la web especificada. Siempre debe ponerse una barra (/) al final.

$gestor = fopen("ftp://user:[email protected]/fichero.txt", "w"); Se abre una conexión al servidor especificado.

PHP incorpora una serie envolturas para distintos protocolos tipo URL para trabajar junto con funciones del sistema de ficheros, como fopen(), copy(), file_exists() y filesize()

La sintaxis de URL que se utiliza para describir una envoltura es:

scheme://.... (file://..., http://..., ftp://..., …)

Page 10: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.

Page 11: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.

Page 12: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.

Para verificar que la operación fopen() ha tenido éxito: Apertura para lectura silenciando errores con el operador @

$fichero = @fopen("datos.txt", 'r'); Si no se ha podido abrir el fichero finaliza la ejecución del script

devolviendo un mensaje de error:

die() -> Provoca la finalización de la ejecución del script mostrando el mensaje recibido como parámetro

En caso contrario el script continúa ejecutándose.

if (!$fichero)die("ERROR: no se ha podido abrir el fichero de datos");

Cierre fclose() fclose(identifcador)

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 13: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.

Page 14: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.

Page 15: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Apertura y cierre.

‘w’ abre el archivo en modo sólo escritura, colocando el puntero del archivo al principio del mismo. Si el archivo no existe, lo crea, y si existe su contenido será borrado

Page 16: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros. Leer

string fgets ($puntero, [bytes]) Obtiene una línea desde el puntero del fichero Se termina de leer cuando llega al final de línea, final del fichero o el

último byte de datos (lo que suceda primero). byte indica cuantos bytes (caracteres) queremos leer del fichero

(opcional) string fread ($puntero, longitud)

Devuelve una cadena de texto con el contenido leído desde el archivo Es similar a fgets( ), pero se lee todo el fichero o hasta el carácter

longitud, que indica el número de bytes que se deben leer (lo que suceda primero).

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 17: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Page 18: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Leer todo el contenido y almacenar cada línea en una posición del array que devuelve. file (nombre_fichero)

Leer todo el contenido y devolverlo en un string. Se le puede indicar la posición inicial a partir de la que desemos extraer el texto (comenzando desde cero), y el número de caracteres a obtener. file_get_contents (nombre_fichero[, use_include_path,

contexto de flujo, posición_inicial, num_caracteres])

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 19: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros

Page 20: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros. Escribir (w ó a )

fwrite( $fichero, cadena[, longitud]) Escribe en $fichero los caracteres de cadena. Si se añade el parámetro longitud, escribe hasta que termine la cadena o hasta

que se alcancen los caracteres indicados en este parámetro, lo que antes ocurra.

Devuelve el número de caracteres escrito fputs es una alias de fwrite.

Cuando se escribe en un archivo los datos previamente son almacenados en un buffer de escritura (espacio en memoria RAM). El tamaño del buffer suele ser de 8K, y tal y como indica el manual de PHP.

Con la función de PHP set_file_buffer() es posible definir el tamaño del buffer. Usando la función fflush() podemos forzar que se escriban en el archivo los

cambios pendientes en el buffer de escritura. Cuando se llama a fclose() se escribirán también los cambios pendientes.

dawa49
Resaltado
dawa49
Resaltado
dawa49
Resaltado
Page 21: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

‘w+’ abre el archivo en modo escritura y lectura. Si el archivo no existe, lo crea, y si existe, su contenido será borrado.

Page 22: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

‘a+’ abre el archivo en modo de agregar información y además leerlo. Los datos que se ingresen se agregarán al final del mismo, sin eliminar el contenido que tuviera. En este modo, si el archivo no existe, lo creará en ese momento.

Page 23: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Creación y apertura para lectura y escritura; coloca el puntero del fichero al principio del mismo. Si el fichero ya existe, la llamada a fopen() fallará devolviendo FALSE y generando un error de nivel E_WARNING. Si el fichero no existe se intenta crear. 

Page 24: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Silenciando errores con @ (Si la apertura falla, se genera un error de nivel E_WARNING. Se usa @ para suprimir esta advertencia.) 

Page 25: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Creación y apertura para lectura y escritura; coloca el puntero del fichero al principio del mismo. Si el fichero ya existe, no es truncado ni la llamada a la función falla. Si el fichero no existe se crea. 

Page 26: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

EscribirTambién podemos insertar texto en un archivo a partir de una cadena de

texto usando la función de PHP: file_put_contents().

feof(identificador) (TRUE -> fin, FALSE -> no fin)Verifica el final de fichero.

rewind( identificador)

Permite colocar el puntero al principio del fichero. ftell( identificador)

Devuelve la posición actual del puntero al archivo dentro del mismo.

dawa49
Resaltado
Usuario
Resaltado
Usuario
Resaltado
Usuario
Resaltado
Page 27: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Page 28: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Otras operaciones: fgetss()

Idéntica a fgets con la diferencia de que los caracteres html encontrados son eliminados del archivo a medida que se lee el mismo.

Opcionalmente puede pasarse una lista de tags que no deben ser eliminados.

Lee una línea (de cualquier longitud) eliminando los tags html excepto los indicados como segundo parámetro. Los tags que cierran éstos tampoco son eliminados. (</td>,..)

readfile(path) Lee un fichero y lo escribe en el buffer de salida.

Usuario
Resaltado
Usuario
Resaltado
Usuario
Resaltado
Usuario
Resaltado
Usuario
Resaltado
Page 29: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.

Page 30: 10.UT8 Ficheros y Directorios_1_php

Ficheros y Directorios: Procesamiento de ficheros.