🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ <?php header("content-type:text/html;charset=utf-8"); /** * 遍历出一个文件夹下所有的文件和目录 *封装一个函数,可以统计出一个文件夹下面目录的数量和文件的数量。 *封装一个函数,可以删除目录 */ //测试:遍历出一个文件夹下所有的文件和目录,数组 $filename="./xx"; $result=fileDirectory($filename); dump($result); //测试:遍历出一个文件夹下所有的文件和目录,输出 $result=readDirs($filename); //测试:封装一个函数,可以统计出一个文件夹下面目录的数量和文件的数量。 $filename="./xx"; $result=getFileCount($filename); dump($result); //测试:封装一个函数,可以删除目录 $filename="./jj"; $result=del($filename); dump($result); /** * 遍历出一个文件夹下所有的文件和目录 * @param $filename string 文件夹或文件的路径 $deep int 默认0 文件的递归深度 * @return $file_list arr 二维数组 */ function fileDirectory($filename, $deep=0) { if(! file_exists($filename)) return false; //如果传递过来的路径不存在直接返回false static $file_list = array(); //存储所有的文件信息,二维数组 $handle = opendir($filename); while(false !== ($rec = readdir($handle)) ) { if($rec == '.' || $rec == '..') continue; //目录下有.和..跳出循环 //当前的文件信息,存储到数组中,这个数组是二维数组中一个 $fileinfo['filename'] = $rec; $fileinfo['deep'] = $deep; $file_list[] = $fileinfo; //判断当前读取到的是否为目录 if(is_dir($filename.'/'.$rec)) { fileDirectory($filename.'/'.$rec,$deep+1); } } //循环读取完毕后,关闭数据流 closedir($handle); //返回读取的结果 return $file_list; } /** * 遍历出一个文件夹下所有的文件和目录 * @param $filename string 文件夹或文件的路径 $deep int 默认0 文件的递归深度 */ function readDirs($filename,$deep=0) { if(! file_exists($filename)) return false; //如果传递过来的路径不存在直接返回false $handle = opendir($filename); while(false !== ($rec = readdir($handle)) ) { if($rec == '.' || $rec == '..') continue; //目录下有.和..跳出循环 $rec = iconv("gbk", "utf-8", $rec); echo str_repeat('&nbsp;',$deep*4),$rec,'<br />'; //判断当前读取到的是否为目录 if(is_dir($filename.'/'.$rec)) { readDirs($filename.'/'.$rec,$deep+1); } } //循环读取完毕后,关闭数据流 closedir($handle); } /** * 封装一个函数,可以统计出一个文件夹下面目录的数量和文件的数量。 * @param $filename string 文件夹或文件的路径 * @return arr 一维数组 */ function countDirA($filename,&$dirNum=0,&$fileNum=0){ // 打开句柄 $handle = opendir($dir); // 当文件名为0的时候,判断是否全等于false,不全等于false继续执行 while(false !== ($rec = readdir($handle)) ) { // 过滤.和.. if($fileName == '.' || $fileName == '..') continue; // 拼接完整路径 $newFile = "$dir/$fileName"; if(is_dir($newFile)){ $dirNum++; countDirA($newFile,$dirNum,$fileNum); }else{ $fileNum++; } } // 关闭句柄 closedir($handle); return array($dirNum,$fileNum); } /** * 封装一个函数,可以删除目录 * @param $filename string 文件夹或文件的路径 */ function del($filename) { if(! file_exists($filename)) return false; //如果传递过来的路径不存在直接返回false $handle = opendir($filename); while(false !== ($rec=readdir($handle))) { if($rec == '.' || $rec == '..') continue; //目录下有.和..跳出循环 //开始删除,是目录递归 if(is_dir($filename.'/'.$rec)) { del($filename.'/'.$rec); } else { unlink($filename.'/'.$rec); } } //关闭数据流 closedir($handle); //删除本身的空目录再把自己本身函数结束,返回上一层函数 return rmdir($filename); } /** * @param $n 任意类型 * @return var_dump(参数) 打印出详细信息 */ function dump($n=null) { echo "<hr />"; echo "<pre>"; var_dump($n); echo "</pre>"; echo "<hr />"; } ~~~