php遍历文件夹下所有文件|php怎么遍历指定目录下的文件(可指定文件类

php遍历文件夹下所有文件|php怎么遍历指定目录下的文件(可指定文件类的第1张示图

1. PHP遍历输出文件夹内的所有文件用递归算法

一般来说,类似这种遍历输出所有文件,大多采用递归算法,这样程序显得比较简洁,其实际执行效率来说,并不见得比其他方法更好。以下是示例: function file_list($path) { if ($handle = opendir($path))//打开路径成功 { while (false !== ($file = readdir($handle)))//循环读取目录中的文件名并赋值给$file { if ($file != "." && $file != "..")//排除当前路径和前一路径 { if (is_dir($path."/".$file)) { // echo $path.": ".$file."<br>";//去掉此行显示的是所有的非目录文件 file_list($path."/".$file); } else { echo $path.": ".$file."<br>"; } } } } }

2. php 循环遍历文件夹下面的所有目录及文件并且每个文件都写入一句话

/*****************************获取目录下的所有文件*[$dir]文件夹路径****************************/functiondeepScanDir($dir){$fileArr=array();$dirArr=array();$dir=rtrim($dir,'//');if(is_dir($dir)){$dirHandle=opendir($dir);while(false!==($fileName=readdir($dirHandle))){$subFile=$dir.DIRECTORY_SEPARATOR.$fileName;if(is_file($subFile)){$fileArr[]=$subFile;}elseif(is_dir($subFile)&&str_replace('.','',$fileName)!=''){$dirArr[]=$subFile;$arr=deepScanDir($subFile);$dirArr=array_merge($dirArr,$arr['dir']);$fileArr=array_merge($fileArr,$arr['file']);}}closedir($dirHandle);}returnarray('dir'=>$dirArr,'file'=>$fileArr);}/*****************************将内容写入文件*[$filename]文件路径*[$contents]文件内容*[$type]读写类型****************************/functionwriteFileContents($filename,$contents,$type='a'){if(!($fd=fopen($filename,$type)))returnFALSE;if(!fwrite($fd,$contents."")){fclose($fd);returnFALSE;}fclose($fd);returntrue;}#示例:$dir="/usr/local/php/test/";$dirFiles=deepScanDir($dir);if(!empty($dirFiles['file'])){foreach($dirFiles['file']as$file){writeFileContents($file,"Hello",$type='a+');}}

3. PHP遍历并打印指定目录下所有文件实例

这篇文章主要介绍了PHP遍历并打印指定目录下所有文件实例,需要的朋友可以参考下 代码如下:<?php//功能:遍历并打印指定目录下所有文件 functionscan_dir($dir_name,$dir_flag=1){ static$FILE_COUNT=1;//记录文件数目初值为1目录名称不记 $FILE_COUNT–;//每调用一次scan_dir()函数自减1 @$dir_handle=opendir($dir_name);//抑制错误信息显示 便于自定义错误显示 if(!$dir_handle) die("目录打开错误!"); while(false!==($filename=readdir($dir_handle))) //文件名为‘0'时,readdir返回FALSE,判断返回值是否不全等 {$flag=$dir_flag;//古怪的is_dir($filename)!$filename这个路径必须能够寻到!当$filename不存在或者不是目录时返回false if($filename!='.'&&$filename!='..') { $FILE_COUNT++;//不记录当前路径和上一级路径 while($flag>0&&–$flag)//负数仍为真 echo''; if(is_dir($dir_name.$filename)) //判断是否为一个目录 {echo'<strong>'."<ahref=".$dir_name.$filename.">".$filename."</a></strong><br>";scan_dir($dir_name.$filename.'/',$dir_flag+1);//$dir_flag标志目录树层次 } else {echo"<ahref=".$dir_name.$filename.">".$filename."</a><br>"; } } } closedir($dir_handle);//关闭目录句柄 echo"文件总数:".$FILE_COUNT.'<br>';} scan_dir('D:wampwwwtestlamp61'); //指定的文件路径?>

4. PHP不用递归遍历目录下所有文件的代码

实现代码:/***PHP非递归实现查询该目录下所有文件*@paramunknown$dir*@returnmultitype:|multitype:string*/functionscanfiles($dir){if(!is_dir($dir))returnarray();//兼容各操作系统$dir=rtrim(str_replace('\\','/',$dir),'/').'/';//栈,默认值为传入的目录$dirs=array($dir);//放置所有文件的容器$rt=array();do{//弹栈$dir=array_pop($dirs);//扫描该目录$tmp=scandir($dir);foreach($tmpas$f){//过滤…if($f=='.'||$f=='..')continue;//组合当前绝对路径$path=$dir.$f;//如果是目录,压栈。if(is_dir($path)){array_push($dirs,$path.'/');}elseif(is_file($path)){//如果是文件,放入容器中$rt[]=$path;}}}while($dirs);//直到栈中没有目录return$rt;}附另一篇:不用递归遍历目录下的文件如果要遍历某个目录下的所有文件(包括子目录),最首先想到的思路就是用递归:先处理当前目录,再处理当前目录下的子目录。不用递归可不可以呢?以前学数据结构的时候看到过,递归其实是利用堆栈来实现的,递归的特点就是不断的调用自身,最后一次的调用是最先执行完的,倒数第二次调用是其次执行完的,依次类推,最初的调用是最后执行完的。如果理解了递归的原理,其实就可以把所有用递归的实现转化为非递归的实现。用非递归方式遍历某个目录下的所有文件,思路主要分三步:1.创建一个数组,将要遍历的这个目录放入;(其实就是创建了一个栈)2.循环处理这个数组,循环结束的条件是数组为空;3.每次循环,处理数组中的一个元素,并将元素删除,如果这个元素是目录,则将目录下所有的子元素加入数组;按照这种思路写出的代码如下:/***遍历某个目录下的所有文件*@paramstring$dir*/functionscanAll($dir){$list=array();$list[]=$dir;while(count($list)>0){//弹出数组最后一个元素$file=array_pop($list);//处理当前文件echo$file."\r\n";//如果是目录if(is_dir($file)){$children=scandir($file);foreach($childrenas$child){if($child!=='.'&&$child!=='..'){$list[]=$file.'/'.$child;}}}}}这里我并没有认为递归有多大的缺点,事实上很多情况下,用递归来设计还是非常简洁可读的,至于效率问题,除非在递归深度特别大的时候,才会有影响。以下是用递归的实现,作为对比:/***遍历某个目录下的所有文件(递归实现)*@paramstring$dir*/functionscanAll2($dir){echo$dir."\r\n";if(is_dir($dir)){$children=scandir($dir);foreach($childrenas$child){if($child!=='.'&&$child!=='..'){scanAll2($dir.'/'.$child);}}}}运行发现,两个函数的结果略有不同,主要表现在打印的顺序上。函数一运行结果的顺序是倒着的,是因为压栈的顺序正好和scandir出来的顺序相反了,可以将第21行改一下:$children=array_reverse(scandir($file));这样出来结果就完全相同了。

5. php怎么遍历指定目录下的文件(可指定文件类

遍历目来录下文件,源首先获取该目录下的所有文件名。

$folder='./folder/';foreach(scandir($folder)AS$value){if($value=='.'OR$value=='..')continue;echo'文件名:'.$value."";}

6. 写一个php函数,可以遍历目录下面的所有文件及子文件夹并修改后缀名

可以用递归的方式,还有别的方式能实现function my_dir($dir){ $files = array(); if (@$handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { if ($file != ".." && $file != ".") { if (is_dir($dir . "/" . $file)) { $files[$file] = my_dir($dir . "/" . $file); } else { $files[] = $file; } } } closedir($handle); return $files; }}

7. PHP怎么遍历一个文件夹下所有的文件,默认显示第一个内容。

在 php 语言里,列出一个文件夹下所有的文件,最简单的是使用 scandir 函数,示例如下:

<?php$dir='/tmp';$files1=scandir($dir);print_r($files1);?>

scandir 原型定义如下:

arrayscandir(string$directory[,int$sorting_order[,resource$context]])

第2个参数,可以将获取的文件列表按升、降序进行排序。

8. php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

最近刚写的,可以遍历指定目录下的所有文件、文件夹、特定后缀的文件:

/***遍历目录*@paramstring$dir绝对/相对路径*@paramstring$filter默认*返回所有文件及文件夹,*.php仅返回php文件,如果$patten为GLOB_BRACE可实现多文件筛选,如*.{php,html},返回php和html文件*@paramconst$patten默认GLOB_BRACE,可选:GLOB_ONLYDIR,更多参数请参考手册*@paramstring/bool$nocache防止本次调用的结果缓存上次的结果,如果一个脚本仅调用一次本函数,则不用管,否则得设个值*@returnarray*/functionglobdir($dir,$filter='*',$patten=GLOB_BRACE,$nocache=null){static$file_arr=array();isset($nocache)&&$file_arr=array();if(!is_dir($dir))return;if($patten==GLOB_ONLYDIR){$code='if(is_dir($file)){$file_arr[]=$file;globdir($file,"*",GLOB_ONLYDIR);}';}else{$code='is_file($file)?$file_arr[]=$file:globdir($file,"'.$filter.'",'.$patten.');';}array_walk(glob("{$dir}/{$filter}",$patten),create_function('$file,$k,$file_arr',$code),&$file_arr);if($filter!='*'){array_walk(glob("{$dir}/*",GLOB_ONLYDIR),create_function('$dir,$k,$param','list($filter,$patten)=explode("|",$param);globdir($dir,$filter,$patten);'),"{$filter}|{$patten}");}return$file_arr;}

9. php怎样遍历远程文件夹下的文件

window是用的GB2312的编码,你的php文件应该用的是UTF-8,所以正如你写的那样,先要转换编码$dir=iconv("utf-8","gb2312",$dir);但你别忘了,你用的是UTF-8的编码,所以你第六行写错了,把GB2312转换为UTF-8搞倒了吧123456789101112131415<?phpfunction refresh($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($headle=opendir($dir)){ while ($file=readdir($headle)){ $file=iconv("gb2312","utf-8",$file); if ($file!='.' && $file!='..'){ echo "文件".$file."在文件夹".$dir."下<br />"; } } closedir($headle); }}refresh("D:/AppServ/www/test");?>

10. php 遍历文件夹文件问题

<?php//脚本根目录define('S_ROOT',dirname(__FILE__).DIRECTORY_SEPARATOR);//递归查找搜索文件functionglob_recursive($pattern,$flags=0){$files=glob($pattern,$flags);foreach(glob(dirname($pattern).'/*',GLOB_ONLYDIR|GLOB_NOSORT)as$dir){$files=array_merge($files,glob_recursive($dir.'/'.basename($pattern),$flags));}return$files;}//如果搜索所有文件可用S_ROOT.'image/'."*.*"//如果只是某一类文件可以S_ROOT.'image/'."*.gif"$filelist=glob_recursive(S_ROOT.'image/'."*.gif");foreach($filelistas$file){echo'目录'.dirname($file).'路径'.$file.'<br/>';}?><p>执行脚本结果类似下图</p><p></p>

未经允许不得转载:山九号 » php遍历文件夹下所有文件|php怎么遍历指定目录下的文件(可指定文件类

赞 (0)