Acceso a las propiedades de ficheros y directorios

Cuando trabajamos con ficheros y directorios usando PHP podemos consultar distintas propiedades de ambos. Entre ellas podemos consultar si existe, cual es su tamaño, fecha de última modificación, fecha de último acceso, y el instante de creación.
Las funciones que usaremos para acceder a las propiedades de ficheros y directorios en PHP son:

  • boolean file_exists($fichero_directorio), dice si existe o no un fichero o directorio
  • int filesize($fichero), retorna el tamaño de un fichero
  • int fileatime($fichero), retorna el tiempo (Unix) de último acceso
  • int filemtime($fichero), retorna el tiempo (Unix) de última modificación
  • int filectime($fichero), retorna el tiempo (Unix) de creación (en entornos Windows)

Conocer tipos de ficheros en PHP

Por otra parte también podemos conocer tipos de archivo que es cada fichero o directorio, usando la función filetype($fichero_directorio). Esta función nos devuelve un string donde se índica que tipo es, los principales tipos son:

  • dir, nos dice que el elemento es un directorio
  • file, nos dice que el elemento es un fichero

Ahora vamos a ver unos ejemplos de uso para las anteriores funciones. Para ello usaremos una función listado que recibe un directorio y nos da su listado.
Tener en cuenta que si ponemos el código en …/www, chdir podrá cambiar hacía dentro desde ese punto, pero si tenemos la función en …/www/practica, chdir sólo podrá cambiar desde el fichero práctica.

<?php
function listado($directorio)
	{
	if (chdir($directorio))
		{
		echo "<ul>";
		foreach (scandir($directorio,0) as $elemento)
			{
			if (file_exists($elemento) && filetype($elemento)=="file")
				{
				echo "<li>Estamos tratando el <b>fichero</b> $elemento que tiene un tamaño ".filesize($elemento).", su última acceso fue en ".fileatime($elemento).", su última modificación fue en ".filemtime($elemento).", y su fecha de creación fue en ". filectime($elemento)."</li>";
				}
			elseif (file_exists($elemento) && filetype($elemento)=="dir" && $elemento<>"." && $elemento<>"..")
				{
				echo "<li>Estamos tratando el <b>directorio</b> $elemento que tiene un tamaño ".filesize($elemento).", su última acceso fue en ".fileatime($elemento).", su última modificación fue en ".filemtime($elemento).", y su fecha de creación fue en ". filectime($elemento)."</li>"; 
				}			
			}
		echo "</ul>";
		}
	}
	
listado("/var/www/");
?>

Ejercicios

  1. Haz que las fechas se muestren en formato normal (día/mes/año)
  2. Modifica la función para que reciba un parámetro extra, llamado orden donde ira un 0 o un uno. Servirá para hacer el recorrido ascendente o descendente

Originally posted 2011-03-16 19:33:44.

Deja un comentario