小弟最近想要遍历一个文件夹,文件夹中的内容是按照日期自己增加的,为了防止数量过大而造成遍历卡死,所以加了个保护机制,遍历1000次就停止了。现在就有个问题,比如我有1300个文件,那我只能找出0-1000个文件,即不是最新的记录,如何才能遍历出400-1300的记录呢?本身使用递归做的,代码如下:function myreaddir($dir, $fileName=array(), $total=1000){
$handle=opendir($dir);
$i = count($fileName);
while($file=readdir($handle)){
if(($file!=".") && ($file!="..")){
$fullpath=$dir."\\".$file;
if($i == $total){
break;
}
if(!is_dir($fullpath)){
if(fileext($fullpath) == 'avi'){
$fileName[$i][0] = $fullpath;
$fileName[$i][1] = _toByteString(filesize($fullpath), 2);
$i++;
}
}else{
$fileName = myreaddir($fullpath, $fileName, $total);
}
}
}
closedir($handle);
return $fileName;
}
或者有其他好的方法能实现本功能的望大侠指点。
$handle=opendir($dir);
$i = count($fileName);
while($file=readdir($handle)){
if(($file!=".") && ($file!="..")){
$fullpath=$dir."\\".$file;
if($i == $total){
break;
}
if(!is_dir($fullpath)){
if(fileext($fullpath) == 'avi'){
$fileName[$i][0] = $fullpath;
$fileName[$i][1] = _toByteString(filesize($fullpath), 2);
$i++;
}
}else{
$fileName = myreaddir($fullpath, $fileName, $total);
}
}
}
closedir($handle);
return $fileName;
}
或者有其他好的方法能实现本功能的望大侠指点。
$j=0;//加一个计数器 遍历一个文件就加1,加到400才开始把文件名保存起来。
while($file=readdir($handle)){
if(($file!=".") && ($file!="..")){
$fullpath=$dir."\\".$file;
if($i == $total){
break;
}
if(!is_dir($fullpath)){
if(fileext($fullpath) == 'avi'){
$fileName[$i][0] = $fullpath;
$fileName[$i][1] = _toByteString(filesize($fullpath), 2);
$i++;
}
}else{
$fileName = myreaddir($fullpath, $fileName, $total);
}
}
}
$handle=opendir($dir);
$i = count($fileName);
while($file=readdir($handle)){
if(($file!=".") && ($file!="..")){
$fullpath=$dir."\\".$file;
// if($i == $total){
// break;
// }
if(!is_dir($fullpath)){
if(fileext($fullpath) == 'avi'){
if(count($fileName) > $total) array_shift($fileName); //*** 注意这里 **
$fileName[$i][0] = $fullpath;
$fileName[$i][1] = _toByteString(filesize($fullpath), 2);
$i++;
}
}else{
$fileName = myreaddir($fullpath, $fileName, $total);
}
}
}
closedir($handle);
return $fileName;
}