Acceso a las propiedades de ficheros y directorios


Publicado por jlmora y buscado como: propiedades de un archivo php, obtener las propiedades de un archivo con php, propiedades de un archivo en php, fichero propiedades php, propiedades de un directorio php, php propiedades de un archivo, propiedades archivos php, propiedades archivo php, php obtener fecha de creacion de un archivo, php propiedades fichero,

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

Más entradas sobre PHP