php 递归和非递归遍历目录下的所有文件

//php 递归实现遍历 用dir 返回对象
<?
   function loop($dir){
	 $mydir =dir($dir);    //以对象的形式访问
    while($file = $mydir ->read()){
                        //目录中有隐藏文件‘.‘和‘..‘ 遍历的时候需要注意
            if((is_dir("$dir/$file")) && ($file!=".") && ($file!="..")){
	                echo $file.‘</br>‘;
                        loop("$dir/$file"); //递归循环
            }else{
                   if($file!=".." && $file!="."){
                    echo $file."</br>";
                    }
            }
    }
  }

   loop(dirname(__FILE__));   //dirname 去掉文件名返回目录名

非递归处理遍历目录

思路: 首先创建一个数组,因为第一次传的是一个去掉文件名的目录名(如 c://wamp/www/php)

 进行foreach 循环 所以第一次把C://wamp/www/php 下的全部文件都放入到了 数组中/只够进行 while大循环 每次输出数组的最后一个,当文件为目录的时候在此进行foreach循环

知道最后一个值时count($list)值为0 退出循环

function scanAll($dir)
{
  $list = array();
  $list[] = $dir;
 
  while (count($list) > 0)
  {
	//  var_dump($list);
    //弹出数组最后一个元素
    $file = array_pop($list);
 
    //处理当前文件
    echo $file."</br>";
 
 
    //如果是目录
    if (is_dir($file)){
      $children = scandir($file);
	  var_dump($children);
      foreach ($children as $child){
        if ($child !== ‘.‘ && $child !== ‘..‘){
          $list[] = $file.‘/‘.$child;
		  
          }
       }
     }
	  
	  
  }
}

scanAll(dirname(__FILE__));
时间: 2024-10-24 18:16:03

php 递归和非递归遍历目录下的所有文件的相关文章

遍历目录下的所有文件-os.walk

1 #coding:utf-8 2 3 import os 4 5 6 for root,dirs,files in os.walk("D:"): 7 for fileItem in files: 8 print root + os.sep + fileItem 结果如下 遍历目录下的所有文件-os.walk,布布扣,bubuko.com

C/C++遍历目录下的所有文件(Windows篇,超详细)

注:本文讨论的是怎么用Windows API遍历目录下的所有文件.除Windows API,还有一种Windows/Linux通用的方式,使用<io.h>. WIN32_FIND_DATA结构 遍历目录下的文件需要用到WIN32_FIND_DATA结构.实际上有两种结构:WIN32_FIND_DATAA和WIN32_FIND_DATAW.A和W分别代表ASCII和宽字符(Unicode).定义UNICODE宏时,WIN32_FIND_DATA指WIN32_FIND_DATAW:否则指WIN32

C/C++遍历目录下的所有文件(Windows/Linux篇,超详细)

前面的一篇文章我们讲了用Windows API遍历一个目录下的所有文件,这次我们讲用一种Windows/Linux通用的方法遍历一个目录下的所有文件. Windows/Linux的IDE都会提供一个头文件--<io.h>.看名字,似乎是关于I/O的,但是实际上它还提供了类似于WIN32_FIND_DATA.FindFirstFile().FindNextFile()和FindClose()的查找文件的功能. _finddata_t结构 _finddata_t结构用来记录查找到的文件的信息.实际

php 遍历目录下的所以文件和文件夹

<?php/** * 遍历文件夹和文件列 * @author lizhiming * @date 2016/06/30 */define('DS', DIRECTORY_SEPARATOR); class File{ //返回数组 private $DirArray = array(); private $FileArray = array(); private $DirFileArray = array(); private $Handle, $Dir, $File; //获取目录列表 pub

PHP遍历目录下的全部文件

一.使用dir()函数: 1 function dirTree($directory) { 2 if (empty($directory)) { 3 return; 4 } 5 $dir = dir($directory); 6 $arr = []; 7 $i = 1; 8 while ($file = $dir->read()) { 9 echo '-->'; 10 if ((is_dir("$directory/$file")) && ($file !=

Java API 读取HDFS目录下的所有文件

/** * 获取1号店生鲜食品的分类id字符串 * @param filePath * @return */ public String getYHDSXCategoryIdStr(String filePath) { final String DELIMITER = new String(new byte[]{1}); final String INNER_DELIMITER = ","; // 遍历目录下的所有文件 BufferedReader br = null; try { F

Python递归遍历目录下所有文件

#自定义函数: import ospath="D:\\Temp_del\\a" def gci (path): parents = os.listdir(path) for parent in parents: child = os.path.join(path,parent) #print(child) if os.path.isdir(child): gci(child) # print(child) else: print(child) gci(path) #使用os.walk方

(实用篇)PHP不用递归遍历目录下所有文件的代码

<?php /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ function scanfiles($dir) { if (! is_dir ( $dir )) return array (); // 兼容各操作系统 $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/'; // 栈,默认值为传入的目录 $

用shell脚本递归遍历某个目录下的所有文件并移动到某个指定的目录中

1,先看下脚本cat recursive.sh #!/bin/shread -p "input path:" FilePath function getAllfiles(){for file in ls $FilePathdoif [ -f $file ]thenecho $filemv $file /bak_file/elif test -d $filethenecho "-------------------------------->"cd $fileF