Podemos manejar tanto los directorios como los archivos de manera sencilla con dos clases básicas: Directory y File.
Como su nombre lo indica, es un asistente para manejar directorios, nos permite verificar si un directorio existe, listar archivos en directorios, directorios en directorios, crear y eliminar carpetas.
Pasamos el nombre de un directorio y nos devuelve verdadero si existe. Caso contario nos devolverá falso. Su parámeto es:
Con esta función obtenemos un listado de archivos a partir de una ruta de directorio, permitiendonos aplicar filtros por extensión de archivo. Sus parámetros son:
Ejemplo del código:
function getfilesTest() {
$directoryPath = '/home/luis';
$files = Directory::getFiles( $directoryPath );
print_r( $files );
} // end function getFiles
Lo que imprimiría algo como esto:
Array
(
[0] => /home/luis/doc.html
[1] => /home/luis/phones.txt
[2] => /home/luis/centosrecipes.txt
[3] => /home/luis/screenshot103024.jpg
)
Esta función regresa un listado de directorios a partir de una ruta de un directorio particular. Tiene un único parámetro:
Ejemplo del código:
function printDirectories() {
$directoryPath = '/home/luis';
$directories = Directory::getDirectories( $directoryPath );
print_r( $directories );
} // end function printDirectories
Lo que imprimiría algo como esto:
Array
(
[0] => /home/luis/apps
[1] => /home/luis/config
[2] => /home/luis/lib
[3] => /home/luis/tmp
)
Crea un directorio. Si el directorio ya existe, devolverá un error. Tiene solo un parámetro:
Ejemplo del código:
// La ruta deseada:
$directoryPath = '/home/luis/docs';
// Crea un directorio
if ( Directory::create( $directoryPath ) {
// Hacer algo con el directorio
echo( "Directorio $directoryPath creado.");
} // end if Directory create
Elimina un directorio. Puede hacerlo de forma recursiva y eliminar todos los archivos y sub directorios dentro del mismo.
Ejemplo del código:
// La ruta deseada:
$directoryPath = '/home/luis/tmp';
// Borra el directorio
if ( Directory::delete( $directoryPath ) {
// Hacer algo con el directorio
echo( "Directorio $directoryPath ha sido borrado.");
} // end if Directory delete
// La ruta deseada:
$directoryPath = '/home/luis/tmp2';
// Borra el directorio y todos sus sub directorios
if ( Directory::delete( $directoryPath, true ) {
// Hacer algo con el directorio
echo( "Directorio $directoryPath y todos su contenido ha sido borrado.");
} // end if Directory delete
Nos asiste en el manejo de archivos, para checar si existen, crearlos, leerlos, modificarlos, eliminarlos y moverlos. Es una clase estática y tiene las siguientes funciones:
Devuelve "true" Si el archivo existe. Su único parámetro es:
Ejemplo:
if ( File::exists( '/home/luis/phonelist.text' ) ) {
// Do something with the file
echo "Files exists";
} // end if file exists
Devuelve el contenido del archivo en una cadena. Tiene un parámetro:
Ejemplo:
// Obtener el contenido del archivo
$content = File::read( '/home/luis/phonelist.text' );
// Hacer algo con el contenido
echo "El contenido del archivo es $content";
Escribe contenido a un archivo. Tiene los siguiente parámetros:
// Obtener el contenido del archivo
$content = 'Hola mundo! Este es un texto importante';
// Escribir el contenido
File::write( '/home/luis/prueba.text', $content );
// O, si queremos agregar el contenido
File::write( 'home/luis/prueba.text', $content, true );
Borra un archivo. Tiene los siguiente parámetros:
// Borra el archivo
File::delete( '/home/luis/phonelist.text' );
Copia un archivo de una ubicación a otra.
// Copia el archivo
File::copy(
'home/luis/phonelist.text',
'home/cosme/fulanito/phonelist2.text'
);
Mueve un archivo de una ubicación a otra. Sirve para renombrar el archivo.
// Mueve el archivo
File::move(
'home/luis/phonelist.text',
'home/cosme/fulanito/phonelist2.text'
);
Obtiene la extensión de un archivo.
// Obtiene la ruta del archivo
$ext = File::getExtension( $filePath );
// Haz algo con la extensión
echo $ext;
Escribe el contenido de un archivo a la respuesta http. Limpia el buffer de salida, obtiene el tipo de archivo y escribe el contenido.
// Escribe un archivo a la respuesta http.
File::writeToResponse( '/home/luis/pic.jpg' );