Anda di halaman 1dari 16

UNIVERSIDAD LAICA ELOY ALFARO DE MANABI

FACULTAD DE CIENCIAS INFORMATICAS

ASIGNATURA:
PROGRAMACION AVANZADA

TEMA/TITULO DEL TRABAJO:


Gestin de archivo plano en PHP

Integrantes:
MERO BAQUE JOSE DANIEL PAREDES ROBLES HOLGER

Curso: 5 A Profesor(a):
Ing. Rubn Solrzano

Gestin de archivos por PHP


El tratamiento de archivos resulta ser una prctica muy comn en cualquier sitio web. Muy a menudo nos vemos en la necesidad de procesar un texto para cambiarle el formato, buscar una cadena en su interior o cualquier otro tipo de operacin. PHP propone un sinfn de funciones para la gestin de archivos que van desde las ms elementales de apertura, lectura y cierre a otras ms rebuscadas como el clculo de espacio en el disco duro, tamao del archivo, gestin de derechos de acceso. En este artculo pretendemos mostraros cules son las funciones ms esenciales para el tratamiento de archivos para posteriormente ejemplificarlas en un par de scripts que os pueden resultar tiles: Funcin copy rename unlink Funciones de gestin de archivos Descripcin Sintaxis Copia un archivo copy($origen,$destino) Cambia el nombre del archivo de $antes a rename($antes,$despues) Borra el archivo unlink($archivo)

Funciones para la lectura de archivos Funcin fopen fgets fwrite fseek feof fpassthru fclose Descripcin Abre un archivo y le asigna un identificador id. Veremos el modo ms adelante Lee una lnea de un archivo hasta un nmero mximo de caracteres Escribe una cadena dentro del archivo Avanza o retrocede el puntero del archivo un cierto nmero de posiciones Comprueba si el puntero que lee el archivo ha llegado al final Lee completamente el archivo y lo muestra Cierra el archivo abierto previamente Sintaxis $id = Fopen($archivo, $modo) fgets($id,$max) fwrite($id, $cadena) fseek($id,$posiciones)

feof($id) fpassthru($id) fclose($id)

Las operaciones ms elementales, copia, borrado y cambiar el nombre, requieren nicamente el nombre (y path) del archivo sobre el cual se ejerce la operacin. Para operaciones ms complejas, como la lectura de lneas o la escritura de texto dentro del archivo, se requiere de una previa apertura del archivo al cual le asignaremos un indentificador $id. Una vez abierto el archivo, podremos desplazarnos a lo largo de l por medio de un puntero imaginario que avanza o retrocede por las lneas de texto y mediante el cual nos situaremos en el lugar escogido para insertar, modificar o simplemente copiar una cadena. Existen distintos modos de apertura que nos permiten definir las acciones que podemos realizar sobre el archivo. Aqu os mostramos los diferentes modos que, como veris, son de lo ms variado:

Modo Observaciones r r+ Abre el archivo slo para lectura. La lectura comienza al inicio del archivo. Abre el archivo para lectura y escritura. La lectura o escritura comienza al inicio del archivo. w Abre el archivo slo para escritura. La escritura comienza al inicio del archivo, y vaca el archivo. Si el archivo no existe, intenta crearlo. w+ Abre el archivo para escritura y lectura. La lectura o escritura comienza al inicio del archivo, y vaca el archivo. Si el archivo no existe, intenta crearlo. a Abre el archivo para slo escritura. La escritura comenzar al final del archivo. Si el fichero no existe se intenta crear. a+ Abre el archivo para lectura y escritura. La lectura o escritura comenzar al final del fichero. Si el fichero no existe se intenta crear.

Lectura secuencial de archivos con PHP


Sigamos con nuestro aprendizaje prctico del uso de ficheros en PHP. Ya hemos visto cmo abrir un archivo por medio de la funcin fopen. El paso siguiente es aprender a leer el contenido del archivo, tarea que llevaremos a cabo por medio de la funcin fgets. Esta funcin se encarga de leer lnea a lnea el contenido de un archivo texto por lo que su utilizacin ha de ser incluida dentro de una estructura de tipo bucle. En el ejemplo que os mostramos a continuacin nos hemos servido de esta lectura secuencial para localizar dentro del texto una cadena cualquiera a la que, a continuacin, le cambiamos el formato para ponerla en negrita por medio de la etiqueta <b>. Esto nos puede resultar til si llevamos a cabo bsquedas internas en nuestro sitio y queremos resaltar la cadena de bsqueda en el texto de la pgina encontrada. Evidentemente, la utilidad de fgets resulta ser mucho ms amplia. Podemos emplearla, por ejemplo, con archivos remotos para extraer las etiquetas meta o para muchas otras cosas que se nos puedan ocurrir. Aqu os proponemos el script:

Funciones Bsicas de Archivos PHP Cambiar los permisos de un archivo chmod ('El_archivo.xxx',0777); Cambiar el nombre del propietario de un archivo chown ('El_archivo.xxx','Mi nombre'); Copiar un archivo copy('El_archivo.xxx','/nuevo_directorio/'); Obtener el directorio inicial de un archivo o subdirectorio dirname('directorio_raiz/subdirectorio'); Obtener el espacio disponible en un directorio en Bytes. disk_free_space('directorio'); Verificar si un archivo existe file_exists ('archivo.xxx'); Obtener la hora del ultimo acceso a un archivo fileatime('archivo.xxx'); Obtener la hora de la ltima modificacin de un archivo filemtime('archivo.xxx'); Obtener el dueo de una archivo fileowner ('archivo.xxx'); Obtener los permisos de una archivo fileperms ('archivo.xxx'); Obtener el tamao en bytes de un archivo filesize('archivo.xxx'); Obtener el tipo de archivo filetype('archivo.xxx'); Abrir un archivo o direccin URL fopen ('archivo.xxx','r'); Saber si un archivo es ejecutable is_executable('archivo.xxx'); Indica si un archivo fue subido mediante HTTP POST upload is_uploaded_file ('archivo.xxx'); Saber si un archivo se puede escribir is_writable ('archivo.xxx'); Crea un directorio con permisos. mkdir('/nuevo_directorio',0777); Mover un archivo cargado a travs de HTTP POST de un directorio a otro predefinido move_uploaded_file ('directorio/archivo.xxx','directorio2/archivo.xxx'); Leer el contenido resultante de archivo file_get_contents('el_archivo.xx'); Renombrar un archivo o directorio rename("/tmp/archivo_temp.txt", "/home/usuario/login/docs/mi_archivo.txt"); ELIMINAR UN DIRECTORIO rmdir('/directorio');

CREAR UN ARCHIVO TEMPORAL tmpfile(); ELIMINAR UN ARCHIVO unlink('ARCHIVO.XXX'); Trabajando con archivos Otras de las gran ventajas de PHP, es la manipulacin de archivos internos y remotos. Para ello se utiliza una funcin esencial fopen(); que se encarga de abrir un archivo o URL, Basndose en una serie de parmetros que iremos describiendo. La sintaxis de esta funcin con la que trabajaremos es la siguiente: fopen ('archivo.xxx','Modo'); Donde archivo es el nombre del mismo y (.xxx) su extensin, cabe destacar que si la llamada de este archivo se hace de la siguiente forma: esquema://, se asume que es una URL y Php buscara un gestor de protocol para tal esquema. Recordemos que los protocoles pueden ser (http, https, ftp, ftps, pop, pop3, y otros), si Php no encuentra una o ms envolturas registradas para dicho protol, se emitir un mensaje de error. Modo, se refiere a la forma en que abrimos el archivos (bajo que recursos). Por ejemplo: Si queremos hacer una apertura para solo lectura, o lectura y escritura u otro. Estos modos se designan con Letras predefinidas en Php, que son las siguientes: 'r' Apertura para slo lectura; ubica el apuntador de archivo al comienzo del mismo. 'r+' Apertura para lectura y escritura; ubica el apuntador de archivo al comienzo del mismo. 'w' Apertura para slo escritura; ubica el apuntador de archivo al comienzo de ste y lo trunca a una longitud de cero. Si el archivo no existe, intenta crearlo. 'w+' Apertura para lectura y escritura; ubica el apuntador de archivo al comienzo de ste y lo trunca a una longitud cero. Si el archivo no existe, intenta crearlo. 'a' Apertura para slo escritura; ubica el apuntador de archivo al final del mismo. Si el archivo no existe, intenta crearlo. 'a+' Apertura para lectura y escritura; ubica el apuntador de archivo al final del mismo. Si el archivo no existe, intenta crearlo. 'x' Creacin y apertura para slo escritura; ubica el apuntador de archivo al comienzo de ste. Si el archivo ya existe, la llamada a fopen() fallar devolviendo FALSE y generando un

error de nivel E_WARNING. Si el archivo no existe, intenta crearlo. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT en la llamada de sistema open(2) interna. Esta opcin es soportada en PHP 4.3.2 y versiones posteriores, y slo funciona con archivos locales. 'x+' Creacin y apertura para lectura y escritura; ubica el apuntador de archivo al comienzo de ste. Si el archivo ya existe, la llamada a fopen() fallar devolviendo FALSE y generando un error de nivel E_WARNING. Si el archivo no existe, intenta crearlo. Esto es equivalente a especificar las banderas O_EXCL|O_CREAT en la llamada de sistema open(2) interna. Esta opcin es soportada en PHP 4.3.2 y versiones posteriores, y slo funciona con archivos locales. Un ejemplo:

Primero abrimos el archivo en modo de lectura y lo agrupamos a la variable $archivo, si se puede realizar la apertura (sea si fopen() devuelve TRUE), Ejecutamos un bucle WHILE y en el argumento introducimos la funcin feof(), Encargada de verificar si el apuntador a un fichero esta al final del mismo. Luego la funcin fgets(), se encarga de imprimir la lnea del fichero apuntado. y finalmente cerramos el archivo con fclose(); Otro Ejemplo: <? $archivo=fopen("docum ento.txt" , "w"); if ($archivo) { fputs ($archivo, "Resulto el script"); } fclose ($arch ivo); ?> Explicando: Abrimos el archivo nuevamente pero esta vez en modo de solo Escritura. Si se puede

ejecutar ese proceso if($archivo), agregamos una lnea con fputs(), que tendr como contenido Resulto el script. El ultimo paso en esta oportunidad como ya conocemos es cerrar el archivo. Cabe destacar que para que este ultimo ejemplo funcione, obviamente el archivo documento.txt, requiere tener PERMISO DE ESCRITURA, preferiblemente 0777 CHMOD. Comprobar la existencia de un fichero en el servidor con PHP Vamos a ver cmo se puede comprobar mediante PHP si un fichero existe o no en el sistema de archivos del servidor, es decir, dentro del disco duro del servidor. Esta es una tarea que se debera comprobar antes de realizar acciones con cualquier fichero del servidor, porque, si no existe el fichero, las acciones a realizar sobre l no tendran sentido. En PHP existe una funcin que nos ayudar con la tarea de comprobar si existe o no un fichero en el servidor. Nosotros solamente tenemos que hacer uso de ella para saber si existe ese archivo y por tanto, podemos operar con l. file_exists(nombre_del_fichero) La funcin devuelve un boleano, indicando con true que existe el fichero y con false que no existe. Recibe una cadena de caracteres que es el nombre del fichero que se desea comprobar. En principio, si slo se indica un nombre de un fichero, se supone que se debe buscar su existencia dentro del mismo directorio donde se aloja la pgina PHP. Ejemplos Vamos a ver si existe un archivo llamado "mifichero.txt" en el mismo directorio que la pgina PHP: if (file_exists("mifi chero.txt")){ echo "El fichero existe"; }else{ echo "El fichero no existe"; } Si quisiramos comprobar si existe ese fichero dentro de un directorio determinado,

bastara con que escribisemos la ruta de directorios sobre la que deseamos buscar el fichero. file_exists("datos/mifichero.txt") Esta funcin buscara el archivo "mifichero.txt" dentro del subdirectorio "datos". Este subdirectorio "datos" estara contenido dentro del directorio donde colocamos el script PHP. Ejemplo: si existe un fichero, abrirlo y si no existe, crearlo Ahora vamos a mostrar un cdigo muy tpico que sirve para abrir un fichero con un nombre dado. Primero habra que comprobar si existe o no existe ese fichero. Si existe, entonces lo abrimos tal cual est y si no existe, lo crearemos previamente a abrirlo. if (file_exists("mifich ero.txt")){ echo "El fichero existe. Lo abro"; $reffichero = fopen("mifichero.txt", "a"); }else{ echo "El fichero no existe. Lo creo y abro."; $reffichero = fopen("mifichero.txt", "w+"); } En este cdigo, primero se comprueba la existencia del fichero. Si existe (caso afirmativo del if), se abre con el modo "a", que indica que se desea aadir informacin al fichero. Si no existe fichero (caso else del if), se abre con el modo "w+", que indica lectura y escritura y adems indica que si no existe el fichero, se crear en el sistema de archivos en la ruta indicada. Despus de este cdigo, el fichero est abierto para escritura, con lo cual, podemos operar sobre el fichero (escribiendo informacin) y luego deberamos cerrarlo. El cdigo sera como este: //operar con el fichero fwrite ($reffichero,"nuevo texto!!!!"); //cerrar el fichero fclose ($reffichero);

Vamos a continuar con nuestro manual de gestin de archivos con PHP con un sencillo script para realizar una cuenta del nmero de lneas y de caracteres de un archivo de texto. Es un script que puede resultarnos til, por lo menos para practicar un poco con las funciones de manejo de archivos en PHP. Como hemos dicho, se trata de hacer una cuenta del nmero de lneas de un archivo y adems el nmero de caracteres que tiene. Para realizar esta cuenta debemos leer el archivo de texto lnea a lnea acumular uno por cada lnea en una variable, as como acumular en otra variable el nmero de caracteres de cada lnea. El cdigo sera el siguiente: <? //abro el archivo para lectura $archivo = fopen ("miarchivo.txt", "r"); //inicializo una variable para llevar la cuenta de las lneas y los caracteres $num_lineas = 0; $caracteres = 0; //Hago un bucle para recorrer el archivo lnea a lnea hasta el final del archivo while (!feof ($archivo)) { //si extraigo una lnea del archivo y no es false if ($linea = fgets($archivo)){ //acumulo una en la variable nmero de lneas $num_lineas++; //acumulo el nmero de caracteres de esta lnea $caracteres += strlen($linea); } } fclose ($arch ivo); echo " Lneas: " . $num_linea s; echo " Caracteres: " . $caracteres; ?> El script est comentado, pero daremos unas explicaciones adicionales.

Primero abrimos el archivo para lectura. El fichero se llama "miarchivo.txt" y se supone que est en el mismo directorio que este script PHP. Luego creamos un par de variables para llevar la cuenta de las lneas y de los caracteres. Seguidamente hacemos un bucle para recorrer el archivo. El bucle iterar mientras que no se llegue al final del fichero. En cada iteracin del bucle extraigo una lnea, a la vez que compruebo que lo que he extrado tiene validez (Con fgets() se extrae una lnea de texto y si hay un error la funcin devuelve false). Si se extrajo correctamente la lnea de texto se acumula 1 en la variable que cuenta el nmero de lneas y se acumula el nmero de caracteres que tenga en la variable que cuenta los caracteres del archivo. Una vez finalizado el bucle, porque se ha llegado al final del fichero, se muestran los contenidos de las variables con el nmero de lneas y caracteres.

Ejemplo 1 Crear un archivo manualmente y lo ubicas en la carpeta www <?php $f = fopen("ejemplo.txt","r"); ?>

Ejemplo 2 Creacin de un archivo plano. <?Php $Texto="esta es una practica de lenguaje para hoy viernes 07/06/2013."; $f = fopen("Texto1.txt","w"); fputs($f, $Texto); echo "Texto almacenado correctamente"; fclose($f); ?>

Ejemplo 3 Cambio de nombre al archivo plano <?Php $nombreActual="Paredes.txt"; $nombreNuevo ="Paredes123.txt"; if (file_exists($nombreActual)) { rename($nombreActual, $nombreNuevo);

echo "El nombre se cambio correctamente"; } else { echo "No se encontro el archivo $nombreActual"; } ?> Ejemplo 4

Este muestra los primeros caracteres del texto que tiene el archivo <?Php $nombre="Paredes123.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); echo "<H3>"; echo "Texto leido:" . "<Br>"; echo fread($f,8); echo "<Br><Br>"; echo "Se han leido los 8 primeros caracteres"; fclose($f); ?> Ejemplo 5 Almacenar texto en un vector <?Php // Almacenamiento del Texto

$Texto="paredes robles holger alexander quinto a montecristi viernes 07/06/2013";

$f = fopen("Texto2.txt","w"); fwrite($f, $Texto); fclose($f);

// Generacin del vector

$nombre="Texto2.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); fclose($f); $v = file($nombre); $cantidad = count($v); echo "<H3>"; echo "Vector Generado:" . "<Br>"; for ($i=0; $i<$cantidad; $i++) { echo "Posicion [$i]: $v[$i]" . "<Br>"; }

?> Ejemplo 6 Mostrar una letra por cada posicin en un vectores <?Php $nombre="Paredes123.txt"; $f = @fopen($nombre,r) or die("Error al abrir el archivo: $nombre"); echo "<H3>"; echo "Archivo: "; echo fgets($f); echo "<Br>"; rewind($f); while (!feof($f)) { echo " Posicion (" . ftell($f) . ") : "; echo fgetc($f); echo "<Br>"; } fclose($f); ?> Esto es lo que recin llevo Adjuntale lo que tenias enante lo de los parmetros a r w etc

Bibliografa

http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=585:man ejo-basico-de-archivos-con-php-funciones-fopen-fgets-fputs-fclose-y-feof-ejemploscu00833b-&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193. (s.f.). Obtenido de http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id= 585:manejo-basico-de-archivos-con-php-funciones-fopen-fgets-fputs-fclose-y-feofejemplos-cu00833b-&catid=70:tutorial-basico-programador-web-php-desdecero&Itemid=193 http://www.desarrolloweb.com/manuales/75/. (s.f.). Recuperado el 29 de 5 de 2012, de http://www.desarrolloweb.com/manuales/75/ http://www.tutorialesfacil.com.ar/php/AdministracionDeArchivos.htm. (s.f.). Obtenido de http://www.tutorialesfacil.com.ar/php/AdministracionDeArchivos.htm

Anda mungkin juga menyukai