я хочу, получают сумму размера файлов в папке php

Мне назвали папку files, как я определяю сумму размера, он - файлы?

6
задан John 29 September 2019 в 15:13
поделиться

3 ответа

С DirectoryIterator и SplFileInfo

$totalSize = 0;
foreach (new DirectoryIterator('/path/to/dir') as $file) {
    if ($file->isFile()) {
        $totalSize += $file->getSize();
    }
}
echo $totalSize;

и, если вам это нужно, включая подпапки:

$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator('/path/to/dir')
);

$totalSize = 0;
foreach ($iterator as $file) {
    $totalSize += $file->getSize();
}
echo $totalSize;

И вы можете запустить $ totalSize с помощью кода, который мы вам предоставили, в формат от 6000 до 6k для более удобочитаемого вывода. Однако вам придется изменить все 1000 на 1024.

20
ответ дан 8 December 2019 в 02:45
поделиться
echo array_sum(array_map('filesize', glob('*')));
9
ответ дан 8 December 2019 в 02:45
поделиться

Ну, попробуйте это, используя filesize() для вычисления размера файла во время итерации по всем файлам и подкаталогам.

<?php
function get_dir_size($dir_name){
    $dir_size =0;
    if (is_dir($dir_name)) {
        if ($dh = opendir($dir_name)) {
           while (($file = readdir($dh)) !== false) {
              if($file !=”.” && $file != “..”){
                  if(is_file($dir_name.”/”.$file)){
                      $dir_size += filesize($dir_name.”/”.$file);
                  }
                 /* check for any new directory inside this directory */
                 if(is_dir($dir_name.”/”.$file)){
                     $dir_size +=  get_dir_size($dir_name.”/”.$file);
                  }
               }
           }
        }
    }
closedir($dh);
return $dir_size;
}

$dir_name = “directory name here”;
/* 1048576 bytes == 1MB */
$total_size= round((get_dir_size($dir_name) / 1048576),2) ;
print “Directory $dir_name size : $total_size MB”;
?>
4
ответ дан 8 December 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: