vart001
Administrador
    
Desconectado
Mensajes: 1,413

El Mero, mero!
|
 |
« : 02 de Mayo de 2005, 04:34:20 » |
|
Funciones de archivos Conoce gran parte de las funciones del PHP para el tratamiento, lectura y trabajo con archivos.
PHP es uno de los lenguajes del lado del servidor más completos y con mayor número de funciones útiles. En este caso, estudiaremos las funciones que permiten trabajar con archivos, y en algunos casos con directorios.
basename() Esta función devuelve la ubicación base de algún archivo. Es de utilidad cuando nos interesa eliminar la ruta fÃsica de algún archivo y devolver sólo el nombre de dicho archivo y su extensión:
<? $ruta = "/home/httpd/html/file.php"; $file = basename($ruta); //devuelve 'file.php' ?>
Como ves, la función basename devuelve el archivo resultante de la eliminación de la ruta fÃsica. Su utilización es demasiado básica y no necesita de ninguna explicación amplia, aunque su utilidad también es un poco reducida.
chmod() IncreÃblemente el PHP permite cambiar los permisos de algún archivo o directorio utilizando esta función. Obviamente está restringida y su aplicación no es más que un intento por cambiar el valor chmod de algún archivo o carpeta, pero para que verdaderamente funcione se requiere de soporte en el servidor. La única particularidad de esta función es que para otorgar permisos se debe anteponer un 0 al valor del permiso. Por ejemplo, para 755 se debe escribir 0755.
La sintaxis de la función es:
<? chmod("/directorio/archivo", permiso); ?>
En donde permiso, como ya mencionamos, debe ser el valor chmod que deseamos otorgar, con un 0 anteponiéndolo. Para dar a archivo.txt permisos 777 debemos utilizar la siguiente sintaxis:
<? chmod("archivo.txt", 0777); ?>
copy() Como su nombre lo indica, esta función permite copiar archivos dentro del servidor. Muy útil se deseamos hacer un back-up online de modo que tengamos los archivos antiguos dentro del servidor evitando el peso de descargarlos todos. Aún asÃ, las aplicaciones son muchÃsimas.
<? copy($archivo, $destino); ?>
copy() devuelve true si se ejecutó el proceso correctamente y false si no se logró la copia. Podemos aprovechar esta capacidad para mostrar mensajes de error según suceda:
<? if(!copy("archivo.txt","backup1.txt")) { echo "Error al tratar de copiar el archivo. "; } ?>
Lo anterior mostrarÃa un mensaje de error si no se logra la copia del archivo archivo.txt a backup1.txt
dirname() Devuelve el nombre del directorio de una ruta:
<? $ruta = "/directorio/archivo"; $dirname = dirname($ruta); //devuelve '/directorio' ?>
diskfreespace() Esta extraña función devuelve el número de bytes de espacio libre que hay en algún directorio. Para verificar, por ejemplo, el espacio libre disponible en el directorio raÃz de un sitio web se utiliza la sintaxis:
<? $espacio = diskfreespace("/"); ?>
readfile() Lee un archivo completo y devuelve al final el número de bytes leÃdos. Si no se logra abrir la conexión con el archivo devuelve error.
<? $archivo = readfile("archivo.txt"); echo $archivo; //escribe el contenido con el numero de bytes leidos ?>
Esta es una forma muy fácil de leer archivos aunque el problema está en que devuelve el número de bytes leÃdos, cosa que nadie desearÃa, para ello se utiliza más frecuentemente la función file() que devuelve un array con todas las lÃneas del archivo. Más adelante veremos cómo utilizarla. fopen() crea una conexión a algún archivo, especificando el tipo de tratamiento que se le dará al archivo, es decir, si será de lectura, escritura o ambos. Por defecto, se puede leer un archivo pero para lograr escribir en él se requieren permisos chmod 755. fclose() cierra la conexión para liberar memoria.
La sintaxis de fopen es:
$archivo = fopen("archivo.txt",permiso);
permiso equivale a una letra identificadora del tipo de tratamiento que le daremos al archivo. Existen tres básicamente: r (solo lectura), w (escritura) y a (ambos). En el caso de escritura el cursor se ubica al inicio del archivo por lo que la escritura afecta todo el contenido del mismo, mientras que a ubica el cursor al final del archivo para escribir nuevo contenido sin eliminar el existente. Veremos un ejemplo de escritura en un archivo.
<? $fp = fopen("archivo.txt","w"); //abrimos el archivo para escritura fwrite($fp, "Estoy escribiendo en un archivo!!!"); fclose($fp); //cerramos la conexión y liberamos la memoria ?>
Ahora hemos introducido la función fwrite() que permite la escritura en un archivo, según la conexión creada. La sintaxis es:
fwrite($conexion, textoaescribir);
Otra de las muchas formas de leer archivos es utilizar la función fread aunque ésta está un poco limitada, pues sólo lee un archivo hasta determinado número de bytes, para evitar esto se puede utilizar la función file_size para establecer el número de bytes totales y asà leer todo el archivo. Más adelante encontrarás información sobre esta función.
<? $fp = fopen("archivo.txt","r"); //abrimos el archivo como solo lectura $contenido = fread($fp, 2000); //leemos 2000 bytes del archivo establecido en $fp fclose($fp); ?>
file() Esta función toma el contenido total de cualquier archivo y lo guarda lÃnea por lÃnea en un array. Es la más útil de todas las formas de lectura de archivos pues permite crear scripts complejos que trabajen en lÃneas... por ejemplo un rotador de banners que tenga en cada lÃnea un banner diferente para rotar. Pero para ello es necesario conocer algunas funciones de cadena, cosa que no se tratará en este artÃculo. la sintaxis de file no tiene problemas:
$archivo = file("archivo.txt");
Con lo anterior, $archivo ya es un array con todas las lÃneas de archivo.txt. Pero para poder recorrer cada lÃnea de archivo.txt es necesario crear un bucle. ¿Pero cómo sabrá el bucle en donde parar? Para ello haremos uso de la función count() que devuelve la cantidad de elementos de un array.
Como $archivo es un array con cada lÃnea de archivo.txt esto quiere decir que cada elemento en el array equivale en una lÃnea, por ello se puede usar count() facilmente. Pero para aclararlo veamos un ejemplo:
<? $archivo = file("archivo.txt"); //creamos el array con las lineas del archivo $lineas = count($archivo); //contamos los elementos del array, es decir el total de lineas for($i=0; $i < $lineas; $i++){ echo $archivo[$i]; } ?>
Como ves es muy sencillo. Primero abrimos el archivo y lo convertimos en vector (array). Posteriormente guardamos su número total de elementos (que equivale al número de lÃneas) en la variable $lineas. Luego un bucle se encarga de recorrer cada lÃnea y escribirla en pantalla.
La ventaja de este método es que podemos leer cualquier lÃnea fácilmente, pues $archivo es un array. Si deseamos leer la primera lÃnea podemos utilizar $archivo[0] y asà sucesivamente. file_exists() Muy útil función que verifica la existencia de un archivo, devolviendo true si verdaderamente existe y false si no. Veamos un ejemplo:
<? $archivo = "archivo.txt"; if(file_exists($archivo)){ echo "El archivo $archivo existe. "; else{ echo "El archivo $archivo no existe. "; } ?>
Hemos hecho uso de una estructura condicional para mostrar un mensaje de acuerdo a la existencia o no del archivo. Como PHP puede crear conexiones a servidores externos, es posible verificar la existencia de una URL con file_exists() antes de dirigir al usuario a dicha dirección.
fileatime() Devuelve la fecha del último acceso a un archivo, o false en caso de error.
<? echo fileatime("archivo.txt"); ?>
EscribirÃa en pantalla la última fecha de acceso a archivo.txt filesize() Devuelve el número total de bytes que ocupa cualquier archivo. Es posible modificar estos valores mediante divisiones para convertirlo a megabytes, kilobytes, etc.
<? $tam = filesize("imagen.gif"); echo $tam; ?>
El anterior código devolverÃa el tamaño total en bytes que está ocupando imagen.gif
is... Las funciones is permiten conocer algunas caracterÃsticas de un archivo o directorio. Todas poseen la misma sintaxis por lo que sólo veremos para qué sirve cada una.
La sintaxis base es:
<? funcion($archivo); ?>
Donde funcion es alguna de las siguientes: is_dir: Devuelve true si $archivo es un directorio
is_executable: Devuelve true si $archivo es ejecutable
is_file: Devuelve true si $archivo es un archivo y no directorio
is_readable: Devuelve true si se puede leer $archivo
is_writeable: Devuelve true si se puede escribir en $archivo
mkdir() Trata de crear una carpeta en el servidor:
mkdir("/ruta/al/nuevo/directorio",permiso);
El primer parámetro debe ser la ruta al nuevo directorio, es decir, al que se trata de crear y permiso es el permiso chmod en formato octal, es decir, con un 0 antes. El permiso permite establecer el chmod que deseamos al momento de crear el directorio. Funciona igual que chmod().
rename() Trata de renombrar algún archivo.
<? rename("nombreviejo","nuevonombre"); ?>
Con eso terminamos la primera parte de este artÃculo sobre el tratamiento de directorios y archivos. El tema de próximos artÃculos será cómo aplicar realmente estas funciones, para lo cual crearemos un script que funcionará como administrador de archivos vÃa online. Tipo FTP pero más sencillo.
Una nota de importancia es que en casi todos los ejemplos se ha utilizado como archivo el nombre archivo.txt pero en realidad puede ser cualquiera.
|