大家好我需要一个可以统计所有文件,文件夹及其子文件夹等的脚本。
所以我尝试了2个脚本,但每个脚本都返回不同的值。例: 脚本1:2376 脚本2:2178
这是我的2个脚本:
$source = 'folder';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
foreach($files as $file) {
$result[] = $file.'<br />';
}
echo count($result).'<br />';
function listFolders($dir) {
if($dh = opendir($dir)) {
$files = Array();
$inner_files = Array();
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir($dir . "/" . $file)) {
$inner_files = listFolders($dir . "/" . $file);
if(is_array($inner_files)) $files = array_merge($files, $inner_files);
} else {
array_push($files, $dir . "/" . $file);
}
}
}
closedir($dh);
return $files;
}
}
foreach (listFolders($source) as $key=>$file){
$result2[] = $file ."<br />";
}
echo count($result2);
那么,如何使用7000-10000文件和子文件夹计算文件夹?
祝你好运, 乔治!
答案 0 :(得分:0)
如果你的第一个例子是RecursiveIterator,你也在计算点目录。在你的第二个例子中,你将它们剪掉了。
使用此:
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
foreach($files as $file) {
$result[] = $file.'<br />';
}