Почему этот рекурсивный итератор для файлов размером в php неверен? - PullRequest
1 голос
/ 22 августа 2011

Я пытаюсь получить имена файлов, размеры и разрешения в php, используя RecursiveIteratorIterator и RecursiveDirectoryIterator.

Приведенный ниже код работает для правильного вывода всех файлов и имен и размеров каталогов, норазрешения неверны (используется get $file->getPerms).

В этом случае все выводимые разрешения одинаковы, 0666, который я подозреваю, является только первым файлом.

Также обратите внимание, что еслиЯ не использую foreach(new RecursiveIteratorIterator($it) as $file) и вместо этого просто использую foreach($it as $file), он работает правильно, но он не является рекурсивным (он не показывает подкаталоги / файлы).

//remove some file types I don't want showing
$filetypes = array("jpg", "png", "css", "gif");


$it = new RecursiveDirectoryIterator("/root-directory");

foreach(new RecursiveIteratorIterator($it) as $file) {


      //foreach($it as $file) {
      // ^^This works but it's not recursive ?!

 //remove files in $filetypes array
 $filetype = pathinfo($file, PATHINFO_EXTENSION); 

 if (!in_array(strtolower($filetype), $filetypes)) {

//outputs file name correct
echo $file ;

//outputs wrong permissions      
echo substr(sprintf('%o', $file->getPerms()), -4);

//outputs file size correct
echo number_format($file->getSize()/1024, 2) . " KB"; 

 }
}

1 Ответ

0 голосов
/ 25 августа 2011

Проще говоря, это не дает точных результатов в стеке Wamp, возможно, это ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...