La clase File
Mediante objetos de tipo File
representaremos los ficheros
del sistema de ficheros, pudiendo recuperar información (path, nombre,
extensión, tamaño...) o manipularlos (copiar, mover, borrar...).
Índice
- Constructor de
File
. - Comprobando si el fichero existe, es legible o si se puede escribir.
- Recuperando nombre, ruta y extensión.
- El método
getSize()
. - Comprobaciones del tipo MIME.
- Copiando, moviendo y eliminando.
- Comprobaciones del tipo MIME (métodos estáticos).
- Copiando, moviendo y eliminando (métodos estáticos).
Creando el objeto File
Usando el constructor
Para crear un objeto File, usaremos su constructor, que recibe la ruta en el sistema de ficheros donde se encuentra el fichero con el que queremos trabajar.
Parámetros
- string
$path
: ruta del fichero en el sistema de ficheros.
Ejemplo
Existen los métodos setPath()
y getPath()
que permiten
cambiar o consultar la ruta al fichero.
Comprobando la existencia y el acceso
exists()
indica si el fichero con la ruta dada existe en el sistema de ficheros del servidor.
Parámetros
- Ninguno.
Tipo de retorno
- Boolean: true si el fichero existe, false en caso contrario.
Ejemplo
isReadable()
indica si el fichero con la ruta dada se puede leer.
isWritable()
indica si el fichero con la ruta dada puede ser escrito.
Métodos para recuperar información
getPath()
Recupera la ruta relativa del fichero, tomando como partida el directorio desde donde se invoca al método (carpeta test en este caso).
getBaseName()
Retorna el nombre completo del fichero.
getName()
Nombre del fichero, sin la extensión.
getExtension()
Retorna la extensión del fichero, sin el nombre.
getFolder()
Recupera la carpeta en la que se encuentra el fichero. Ruta relativa desde el
punto donde se invocó la método (desde test
).
getSize()
Retorna el tamaño del fichero en bytes.
Comprobación de tipos MIME.
getMime()
Recupera el tipo MIME real del fichero, no mira la extensión sino que usa la extensión de PHP fileinfo para obtener la información.
is()
Comprueba si el fichero es de un tipo MIME concreto.
Por ejemplo, para comprobar
si un fichero es PDF, podemos hacer: $fichero->is('application/pdf');
Por ejemplo, para comprobar si es un icono: $fichero->is('image/vnd.microsoft.icon');
checkMime()
Comprueba el tipo MIME haciendo uso de una expresión una expresión regular.
Por ejemplo para comprobar tipos concretos podemos hacer:
$fichero->checkMime('/\/(pdf|jpe?g)$/i');
Para comprobar tipos genéricos haremos:
$fichero->checkMime('/^image\//i');
.
has()
Comprueba si el fichero es de alguno de los tipos MIME que le indiquemos mediante una lista.
Podremos hacer cosas como:
$fichero->has(['application/pdf','image/jpeg']);
Copiando, moviendo y eliminando ficheros
copy()
El método de objeto copy()
copia ficheros.
Por ejemplo, si queremos realizar una copia del fichero 'logs/readme.txt' en el fichero 'logs/copia.txt', podemos hacer:
move()
Este método permite mover o renombrar un fichero. Por ejemplo, vamos a mover el fichero del ejemplo anterior a '../logs/moved.txt' haciendo;
$copia->move('../logs/moved.txt')
.
delete()
Elimina un fichero del sistema de ficheros.
Por ejemplo: $copia->delete()
.
Comprobando tipos MIME (métodos estáticos)
Los métodos estáticos de File para tipos, nos permiten recuperar información del tipo MIME sin necesidad de tener que crear el objeto.
File::mime()
Recupera el tipo real de un fichero del que le pasamos la ruta.
File::isMime()
Permite saber si un fichero tiene un determinado tipo o no.
File::mimeCheck()
Valida el tipo MIME mediante una expresión regular.
Probando si el tipo MIME del fichero '../public/favicon.ico' cumple con la expresión regular '/^image\/*/i':
File::isMime('../public/favicon.ico', '/^image\/*/i');
File::hasMime()
Comprueba si el fichero tiene uno de los tipos MIME indicados en una lista.
Copiando, moviendo y eliminando ficheros (métodos estáticos)
File::makeCopy()
El método File::makeCopy()
hace una copia de un fichero:
File::doMove()
El método File::doMove()
mueve un fichero desde la ruta de origen a la
ruta de destino.
File::remove()
El método File::remove()
elimina un fichero.