Desarrollo

Trabajando con ficheros – funciones útiles

Desarrollo PHP

Vamos a repasar una serie de funciones que nos pueden ser útiles cuando trabajamos con ficheros. A las funciones que ya hemos visto tanto en la apertura, lectura y escritura de ficheros vamos a incorporarles algunas más. Estas funciones pueden sernos útiles a la hora de modificar los ficheros tanto interior como exteriormente, lo que luego veremos qué significa.

Si quieres ver los artículos anteriores y todo lo que hemos visto hasta el momento o lo planificado después de acabar con los ficheros, visita el índice de contenidos. Mientras tanto, veamos funciones útiles para ficheros.

Funciones útiles para ficheros

Como hemos comentado, este artículo listará algunas funciones útiles para ficheros, por lo que no tendrá una estructura clara de principio y fin. Simplemente iremos viendo y comentando funciones que pueden sernos útiles, aunque podéis consultar muchas más en el manual.

basename

La función basename nos va a devolver el último componente de nombre de una ruta. Puede sernos muy útil si tenemos una ruta completa hacia un fichero y queremos saber el nombre del fichero, sin más, o incluso del último directorio. Además, le podemos indicar también un sufijo para que no lo tenga en cuenta. Aquí tenemos algún ejemplo:

basename('directorio/carpeta/archivo.txt'); // Devuelve "archivo.txt"
basename('directorio/carpeta/archivo.txt', '.txt'); // Devuelve "archivo"
basaneme('directorio/carpeta'); // Devuelve "carpeta"

copy

Esta sencilla función hace lo que su nombre indica (en inglés, claro), copiar un fichero. Se le debe indicar el fichero de origen y el fichero de destino para que nos cree una copia idéntica pero con otro nombre, por supuesto.

copy('archivo.txt', 'archivo_copiado.txt');

dirname

Si con basename obteníamos el nombre del último componente (fichero o carpeta), con dirname obtenemos el nombre del padre, es decir, de la carpeta que lo contiene. Además, podemos especificar el nivel al que buscar esa carpeta contenedora. Veamos ejemplos:

dirname('directorio/carpeta/archivo.txt'); // Devuelve "carpeta"
dirname('directorio/carpeta/archivo.txt', 2); // Devuelve "directorio"

file_exists

Otra función bastante explícita si conoces algo de inglés es file_exists, la cual comprueba si existe un fichero o directorio. Así de fácil:

file_exists('directorio/carpeta/archivo.txt'); // Devolverá true o false dependiendo si el archivo existe o no

file_size

En el artículo en el que obteníamos un fichero desde un formulario vimos que, a la hora de subirlo, podíamos acceder a su tamaño. ¿Pero y si queremos ver el tamaño de un archivo que ya tenemos? Para eso existe file_size, que nos devolverá el tamaño en bytes.

filesize('directorio/carpeta/archivo.txt');

is_dir para directorios, is_file para ficheros

La sencilla función is_dir nos va a indicar si el nombre que le pasamos es un directorio o no. Por su parte, is_file indicará si es un fichero o no.

is_dir('directorio/carpeta/archivo.txt'); // Devolverá false
is_dir('directorio/carpeta'); // Devolverá true

is_file('directorio/carpeta/archivo.txt'); // Devolverá true
is_file('directorio/carpeta'); // Devolverá false

mkdir para crear, rmdir para eliminar

Con la función mkdir podremos crear directorios en el caso de que, por ejemplo, queramos guardar nuestro fichero en alguna carpeta específica que creemos después de haber comprobado si existe o no con file_exists, por ejemplo. Utilizaremos su contrapartida, rmdir, cuando queramos eliminar directorios, pero sólo lo permitirá si el directorio está vacío.

mkdir('/directorio/carpeta');

rmdir('directorio/carpeta');

pathinfo

Esta función nos va a permitir obtener información acerca de la ruta de un fichero. Puede ser muy útil para obtener información de golpe y compacta, por ejemplo a la hora de subir un archivo nuevo. En concreto, pathinfo nos va a devolver un array con la información sobre los directorios del fichero, su nombre (como haría basename), su extensión y su nombre de fichero (sin la extensión). Veamos un ejemplo para tenerlo más claro:

$info = pathinfo('directorio/carpeta/archivo.txt');

$info['dirname']; // Contiene "directorio/carpeta"
$info['basename']; // Contiene "archivo.txt"
$info['extension']; // Contiene "txt"
$info['filename']; // Contiene "archivo"

rename

Renombra un fichero, tal y como esperábamos por su nombre. Además, lo cambia de directorio si fuera el caso, por lo que es doblemente útil.

rename('directorio/carpeta/archivo.txt', 'movimiento/archivo_movido.txt');

unlink

La última función que veremos hoy sirve para borrar un fichero. Simplemente debemos llamar a unlink junto a la ruta del fichero para que éste desaparezca del mapa.

unlink('directorio/carpeta/archivo.txt');

Resumen

Hemos visto un puñado de funciones útiles para ficheros. A la hora de trabajar con ellos, podremos añadir carpetas, mover el fichero de sitio, renombrarlo, borrarlo, comprobar si existe, etc. Podemos ver el manual si queremos otro tipo de funcionalidades que, si bien quizá no son tan utilizadas como estas básicas, sí que pueden sacarnos de algún apuro.

Finaliamos, por tanto, esta sección dedicada a una introducción al trabajo con ficheros y, después de un nuevo artículo de “A practicar…”, empezaremos con algo gordo: la programación orientada a objetos.

Deja una respuesta