una nombre mostrar listar listado leer imagenes enlistar directorio desde contar carpeta cantidad archivos archivo abrir php file count directory

nombre - mostrar el listado de archivos de un directorio en php



Cuenta cuántos archivos en el directorio php (11)

Estoy trabajando en un proyecto un poco nuevo. Quería saber cómo hacerlo, así que cuenta cuántos archivos hay en un directorio determinado.

<div id="header"> <?php $dir = opendir(''uploads/''); # This is the directory it will count from $i = 0; # Integer starts at 0 before counting # While false is not equal to the filedirectory while (false !== ($file = readdir($dir))) { if (!in_array($file, array(''.'', ''..'') and !is_dir($file)) $i++; } echo "There were $i files"; # Prints out how many were in the directory ?> </div>

Esto es lo que tengo hasta ahora (de la búsqueda). Sin embargo, no está apareciendo correctamente? He agregado algunas notas, así que siéntete libre de eliminarlas, solo para que pueda entenderlas lo mejor que pueda.

Si necesita más información o si siente que no describí esto lo suficiente, no dude en decirlo.


Como yo también necesitaba esto, tenía curiosidad sobre cuál alternativa era la más rápida.

Descubrí que, si lo único que quieres es un conteo de archivos, la solución de Baba es mucho más rápida que las demás. Estaba bastante sorprendido.

Pruébelo usted mismo:

<?php define(''MYDIR'', ''...''); foreach (array(1, 2, 3) as $i) { $t = microtime(true); $count = run($i); echo "$i: $count (".(microtime(true) - $t)." s)/n"; } function run ($n) { $func = "countFiles$n"; $x = 0; for ($f = 0; $f < 5000; $f++) $x = $func(); return $x; } function countFiles1 () { $dir = opendir(MYDIR); $c = 0; while (($file = readdir($dir)) !== false) if (!in_array($file, array(''.'', ''..''))) $c++; closedir($dir); return $c; } function countFiles2 () { chdir(MYDIR); return count(glob("*")); } function countFiles3 () // Fastest method { $f = new FilesystemIterator(MYDIR, FilesystemIterator::SKIP_DOTS); return iterator_count($f); } ?>

Prueba de ejecución: (obviamente, glob() no cuenta los archivos de puntos)

1: 99 (0.4815571308136 s) 2: 98 (0.96104407310486 s) 3: 99 (0.26513481140137 s)


Deberías :

<div id="header"> <?php // integer starts at 0 before counting $i = 0; $dir = ''uploads/''; if ($handle = opendir($dir)) { while (($file = readdir($handle)) !== false){ if (!in_array($file, array(''.'', ''..'')) && !is_dir($dir.$file)) $i++; } } // prints out how many were in the directory echo "There were $i files"; ?> </div>


Demo de trabajo

<?php $directory = "../images/team/harry/"; // dir location if (glob($directory . "*.*") != false) { $filecount = count(glob($directory . "*.*")); echo $filecount; } else { echo 0; } ?>


Prueba esto.

// Directory $directory = "/dir"; // Returns array of files $files = scandir($directory); // Count number of files and store them to variable.. $num_files = count($files)-2;

Sin contar el ''.'' y ''..''.


Puedes obtener el conteo de archivos así:

$directory = "/path/to/dir/"; $filecount = 0; $files = glob($directory . "*"); if ($files){ $filecount = count($files); } echo "There were $filecount files";

donde el "*" es que puedes cambiar eso a un tipo de archivo específico si quieres "*.jpg" o puedes hacer múltiples tipos de archivos como este:

glob($directory . "*.{jpg,png,gif}",GLOB_BRACE)

la bandera GLOB_BRACE expande {a, b, c} para que coincida con ''a'', ''b'' o ''c''


Quizás sea útil para alguien. En un sistema Windows, puede dejar que Windows haga el trabajo llamando al comando dir. Uso una ruta absoluta, como E:/mydir/mysubdir .

<?php $mydir=''E:/mydir/mysubdir''; $dir=str_replace(''/'',''//',$mydir); $total = exec(''dir ''.$dir.'' /b/a-d | find /v /c "::"'');


Simplemente puede hacer lo siguiente:

$fi = new FilesystemIterator(__DIR__, FilesystemIterator::SKIP_DOTS); printf("There were %d Files", iterator_count($fi));


Yo uso esto:

count(glob("yourdir/*",GLOB_BRACE))


simple code add for file .php then your folder which number of file to count its $directory = "images/icons"; $files = scandir($directory); for($i = 0 ; $i < count($files) ; $i++){ if($files[$i] !=''.'' && $files[$i] !=''..'') { echo $files[$i]; echo "<br>"; $file_new[] = $files[$i]; } } echo $num_files = count($file_new);

simple agregar es hecho ....


$it = new filesystemiterator(dirname("Enter directory here")); printf("There were %d Files", iterator_count($it)); echo("<br/>"); foreach ($it as $fileinfo) { echo $fileinfo->getFilename() . "<br/>/n"; }

Esto debería funcionar para ingresar al directorio en dirname. y deja que la magia suceda


<?php echo(count(array_slice(scandir($directory),2))); ?>

array_slice funciona de forma similar a la función substr , solo que funciona con matrices.

Por ejemplo, esto cortaría las primeras dos teclas de matriz de la matriz:

$key_zero_one = array_slice($someArray, 0, 2);

Y si omite el primer parámetro, como en el primer ejemplo, la matriz no contendrá los dos primeros pares clave / valor * (''.'' Y ''..'').