宝哥软件园

遍历指定目录并将所有文件属性信息存储在该目录中的php代码

编辑:宝哥软件园 来源:互联网 时间:2021-09-13

项目需要编写一个可以遍历指定目录下所有文件的函数,这个目录下的子目录也要遍历。输出文件的属性信息并存储。

想想需求,不就是一个ls -al命令吗,只要获取相关属性,加上一个遍历就OK了。

项目过程中操作简单,采用json格式存储,但也发现了一些问题。请记录问题和代码供您参考。

?php定义(' INDEXFORMAT ',' dir,name,size,perms,ower,group,ctime,mtime,atime,后缀');定义(' INDEXTT ','数据/索引。txt’);定义(' INDEXJSON ','数据/索引。JSON’);date_default_timezone_set('亚洲/香港');if(file _ exists(INDETT)){ unlink(INDETT);} $dir=' ./';getIndexFile($ dir);/* *获取索引文件* @ filename INDEXT * @ dir string * */函数getIndexFile($dir,$白名单=' '){ $ string=' ';$ dir=trim($ dir);$ dir=真实路径($ dir);$dir=$dir .'//';if(is _ file($ dir)){ putIndexFile($ dir);} else { putIndexFile($ dir);$ ODir=@ open dir($ dir);while($ FIlename=readdir($ ODir)){ if($ FIlename!='.'$fileName!='.'){ if(is_file($dir).$fileName)){ putIndexFile($dir .$ FIlename);}elseif(is_dir($dir .$fileName)){ getIndexFile($dir .$ FIlename);} } } }如果(!file _ exists(INDETT)){ return false;}//$ data=JSON _ encode(GetIndexFromFile());//file_put_contents(INDEXJSON,$ data);返回真;} /* *获取索引文件* @filename file.index * */函数putIndexFile($file){ if(!file _ exists($ file)){ return false;} $format=explode(',',INDEXFORMAT);$ string=foreach($格式为$key=$value) { if($key!==0 ){ $string .=' t} $string .=getFileAttr($file,$ value);} $string .=' n FIle _ put _ contents(INDETT,$string,FILE _ APPEND);} /* * *从索引文件中获取索引字符串* @return Array() * */函数getindexxformfile($ flag=' '){ if(!file _ exists(INDETT)){ return false;} $arr=文件(INDETT);$format=explode(',',INDEXFORMAT);$ result=array();if(!empty($ flag)){ $ key=array _ search($ flag,$ format);if($ key===false){ return false;} foreach($ arr as $ str){ $ tmp=explode(',trim($ str));$ result[$ flag][]=$ tmp[$ key];} } else { foreach($ arr as $ str){ $ tmp=explode(',trim($ str));foreach($格式为$ key=$ value){ $ result[$ value][]=$ tmp[$ key];//经测试这个操作比较耗时,大概0.7s的样子,慎用!} } }返回$ result} /* *获取文件属性* @ var $文件* @ var $标志* @返回字符串*/函数getFileAttr($file,$flag){ if(!file _ exists($ file)){ return false;} switch($ flag){ case ' dir ' : if(is _ file($ file))返回dirname($ file);返回真实路径($ file);打破;大小写“name”: if(is _ file($ file))返回base name($ file);返回'-';打破;大小写' size ' : if(is _ file($ file))返回文件大小($ file);返回'-';打破;case ' perms ' : return substr(sprint f(' % o ',fileperms($file)),-4);打破;case ' ower ' :返回文件所有者($ file);打破;案例“组”:返回文件组($ file);打破;案例“ctime”:返回file ctime($ file);打破;case ' mtime ' :返回文件mtime($ file);打破;案例' atime':返回文件atime($ file);打破;案例后缀: if(is_file($file))返回substr($file),str pos($ file,'.') 1);返回'-';打破;默认值:返回错误的打破;} } /* *获取文件大小人类可读*/函数getFileSizeFormat($file){ if(!is _ file($ file)){ return '-';} $flags=array('、' K '、' M '、' G '、' T ');对于($ I=0;$ size=1024 $ i4$ I)$ size/=1024;返回回合($大小,2)。$ flags[$ I];}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

更多资讯
游戏推荐
更多+