php如何读取某目录下的所有同类型文件

php如何读取某目录下的所有同类型文件,第1张

PHP使用函数opendir、readdir、closedir来实现文件夹的 *** 作,下面以一个最基本的例子来作为入门介绍:

<php

//获取某目录下所有文件、目录名(不包括子目录下文件、目录名)  

    $dir='C:/Users/';

    $handler = opendir($dir);  

    while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名“0”等情况  

        if ($filename != "" && $filename != "") {  

                $files[] = $filename ;  

           }  

       }  

    }  

    closedir($handler);  

       

//打印所有文件名  

    foreach ($filens as $value) {  

        echo $value"<br />";  

    }  

>

上面的代码显示c:\users文件夹里面的所有的文件和文件夹,忽略和两个特殊含义的文件夹,程序把所有文件和文件夹名称扫描保存到数组里面,然后显示。

如果你需要对文件进行过滤,例如只处理xls文件,可以在过滤和的地方添加代码。例如:

if (substr($filename,-4)=='xls'){

当你理解了上面的代码之后,你就能编写扫描子文件夹、以及子 文件夹里面文件的方法了。基本思路是使用递归,下面我给出一个简单的例子:

function get_allfiles($path,&$files) {  

    if(is_dir($path)){  

        $dp = dir($path);  

        while ($file = $dp ->read()){  

            if($file !="" && $file !=""){  

                get_allfiles($path"/"$file, $files);  

            }  

        }  

        $dp ->close();  

    }  

    if(is_file($path)){  

        $files[] =  $path;  

    }  

}  

     

function get_filenamesbydir($dir){  

    $files =  array();  

    get_allfiles($dir,$files);  

    return $files;  

}  

     

$filenames = get_filenamesbydir("c:/users/");  

//打印所有文件名,包括路径  

foreach ($filenames as $value) {  

    echo $value"<br />";  

}

这个例子使用dir类来编写,实际上用opendir、readdir、closedir来写也是相同的。

<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/>

readFileRecursive($filepath )

>

扩展资料:

php还可以读取文件夹下所有,方法如下

hostdir=dirname(__FILE__)'/data/upload/admin/20170517/'; //要读取的文件夹

(此处空一行)

$url = '/data/upload/admin/20170517/'; //所存在的目录

(此处空一行)

$filesnames = scandir($hostdir); //得到所有的文件

(此处空一行)

//  print_r($filesnames);exit;

//获取也就是扫描文件夹内的文件及文件夹名存入数组 $filesnames

(此处空一行)

$>

<php

 

/

  Goofy 2011-11-30

  getDir()去文件夹列表,getFile()去对应文件夹下面的文件列表,二者的区别在于判断有没有“”后缀的文件,其他都一样

 /

 

//获取文件目录列表,该方法返回数组

function getDir($dir) {

    $dirArray[]=NULL;

    if (false != ($handle = opendir ( $dir ))) {

        $i=0;

        while ( false !== ($file = readdir ( $handle )) ) {

            //去掉"“”、“”以及带“xxx”后缀的文件

            if ($file != "" && $file != ""&&!strpos($file,"")) {

                $dirArray[$i]=$file;

                $i++;

            }

        }

        //关闭句柄

        closedir ( $handle );

    }

    return $dirArray;

}

 

//获取文件列表

function getFile($dir) {

    $fileArray[]=NULL;

    if (false != ($handle = opendir ( $dir ))) {

        $i=0;

        while ( false !== ($file = readdir ( $handle )) ) {

            //去掉"“”、“”以及带“xxx”后缀的文件

            if ($file != "" && $file != ""&&strpos($file,"")) {

                $fileArray[$i]="/imageroot/current/"$file;

                if($i==100){

                    break;

                }

                $i++;

            }

        }

        //关闭句柄

        closedir ( $handle );

    }

    return $fileArray;

}

 

//调用方法getDir("/dir")……

>

以上就是关于php如何读取某目录下的所有同类型文件全部的内容,包括:php如何读取某目录下的所有同类型文件、PHP读取目录下所有文件内容并显示、php中怎样获取目录中文件的个数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9443977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存