php遍历文件夹下的文件
⑴ php遍历并打印指定目录下所有文件实例
这篇文章主要介绍了PHP遍历并打印指定目录下所有文件实例,需要的朋友可以参考下
代码如下:
<?php
//功能:遍历并打印指定目录下所有文件
function
scan_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>'."<a
href=".$dir_name.$filename.">".$filename."</a></strong><br>";
scan_dir($dir_name.$filename.'/',$dir_flag+1);
//$dir_flag标志目录树层次
}
else
{
echo
"<a
href=".$dir_name.$filename.">".$filename."</a><br>";
}
}
}
closedir($dir_handle);
//关闭目录句柄
echo
"文件总数:".$FILE_COUNT.'<br>';
}
scan_dir('D:wampwwwtestlamp61');
//指定的文件路径
?>
⑵ php 遍历文件夹文件问题
<?php
//脚本根目录
define ( 'S_ROOT', dirname ( __FILE__ ) . DIRECTORY_SEPARATOR );
//递归查找搜索文件
function glob_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 ($filelist as $file) {
echo '目录 '.dirname($file).' 路径 '. $file.'<br />'
}
?>
执行脚本结果类似下图
⑶ PHP遍历文件及文件夹
<?php
$dir = 'F:\\game';
function read_dir_all($dir) {
$ret = array('dirs'=>array(), 'files'=>array());
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if($file != '.' && $file !== '..') {
$cur_path = $dir . DIRECTORY_SEPARATOR . $file;
if(is_dir($cur_path)) {
$ret['dirs'][$cur_path] = read_dir_all($cur_path);
} else {
$ret['files'][] = $cur_path;
}
}
}
closedir($handle);
}
return $ret;
}
$p = read_dir_all($dir);
echo '<pre>';
var_mp($p);
echo '</pre>';
?>
⑷ 写一个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;
}
}
⑸ 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;
}
⑹ 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>";
}
}
}
}
}
⑺ php怎么遍历指定目录下的文件(可指定文件类
遍历目录下文件,首先获取该目录下的所有文件名。
$folder='./folder/';
foreach(scandir($folder)AS$value){
if($value=='.'OR$value=='..')continue;
echo'文件名:'.$value." ";
}
⑻ 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+');
}
}
⑼ PHP读取目录下所有文件内容并显示
<?php
function printFile($filepath)
{
//substr(string,start,length)函数返回字符串的一部分;start规定在字符串的何处开始 ;length规定要返回的字符串长度。默认是直到字符串的结尾。
//strripos(string,find,start)查找 "php" 在字符串中最后一次出现的位置; find为规定要查找的字符;start可选。规定开始搜索的位置
//读取文件后缀名
//$filetype = substr ( $filename, strripos ( $filename, "." ) + 1 );
//判断是不是以txt结尾并且是文件
#if ($filetype == "txt" && is_file ( $filepath . "/" . $filename ))
if ( is_file ( $filepath))
{
$filename=iconv("gb2312","utf-8",$filepath);
echo $filename."内容如下:"."<br/>";
$fp = fopen ( $filepath, "r" );//打开文件
#while (! feof ( $f )) //一直输出直到文件结尾
$i = 1;
while ($i < 10)
{
$line = fgets ( $fp );
echo $line."<br/>";
$i = $i +1;
}
fclose($fp);
}
}
(此处空一行)
function readFileRecursive($filepath)
{
if (is_dir ( $filepath )) //判断是不是目录
{
$dirhandle = opendir ( $filepath );//打开文件夹的句柄
if ($dirhandle)
{
//判断是不是有子文件或者文件夹
while ( ($filename = readdir ( $dirhandle ))!= false )
{
if ($filename == "." or $filename == "..")
{
//echo "目录为“.”或“..”"."<br/>";
continue;
}
//判断是否为目录,如果为目录递归调用函数,否则直接读取打印文件
if(is_dir ($filepath . "/" . $filename ))
{
readFileRecursive($filepath . "/" . $filename);
}
else
{
//打印文件
printFile($filepath . "/" . $filename);
echo "<br/>";
}
}
closedir ( $dirhandle );
}
}
else
{
printFile($filepath . "/" . $filename);
return;
}
}
(此处空一行)
header("content-type:text/html;charset=utf-8");
#echo "Hello World"."<br/>";
$filepath = "C:/phpStudy/PHPTutorial/WWW/test/results"; //想要读取的目录
readFileRecursive($filepath )
?>
(9)php遍历文件夹下的文件扩展阅读:
php还可以读取文件夹下所有图片,方法如下
hostdir=dirname(__FILE__).'/data/upload/admin/20170517/'; //要读取的文件夹
(此处空一行)
$url = '/data/upload/admin/20170517/'; //图片所存在的目录
(此处空一行)
$filesnames = scandir($hostdir); //得到所有的文件
(此处空一行)
// print_r($filesnames);exit;
//获取也就是扫描文件夹内的文件及文件夹名存入数组 $filesnames
(此处空一行)
$www = 'http://www.***.com/'; //域名
(此处空一行)
foreach ($filesnames as $name) {
$aurl= "<img width='100' height='100' src='".$www.$url.$name."' alt = '".$name."'>"; //图片
echo $aurl . "<br/>"; //输出他
⑽ PHP怎么遍历一个文件夹下所有的文件,默认显示第一个内容。
在 php 语言里,列出一个文件夹下所有的文件,最简单的是使用 scandir 函数,示例如下:
<?php
$dir='/tmp';
$files1=scandir($dir);
print_r($files1);
?>
scandir 原型定义如下:
arrayscandir(string$directory[,int$sorting_order[,resource$context]])
第2个参数,可以将获取的文件列表按升、降序进行排序。