PHP面试之文件夹下内容重复的文件去重
来源:互联网 发布:山东广电网络集团官网 编辑:程序博客网 时间:2024/06/16 08:57
今天下午复试,面试官引导我写出文件夹下内容重复的文件去重。然后自己在黑板上写了好久没理清楚,现在写出来了,记录一下,如有不对,请各位大佬指出,或者有更好的方式请指导
首先用到md5_file()因为之前也没接触过这个函数 在这里看下手册
md5_file() 函数计算文件的 MD5 散列。md5_file() 函数使用 RSA 数据安全,包括 MD5 报文摘要算法。来自 RFC 1321 的解释 - MD5 报文摘要算法:MD5 报文摘要算法将任意长度的信息作为输入值,并将其换算成一个 128 位长度的"指纹信息"或"报文摘要"值来代表这个输入值,并以换算后的值作为结果。MD5 算法主要是为数字签名应用程序而设计的;在这个数字签名应用程序中,较大的文件将在加密(这里的加密过程是通过在一个密码系统下[如:RSA]的公开密钥下设置私有密钥而完成的)之前以一种安全的方式进行压缩。
这里有两种写法
大神写给我的
class filesss{ private $files = [], $other = [] ,$directory = 'F:/phpstudy/WWW/test'; public function getFiles($directory = '') { $dirHandle = opendir($this->directory); if(!$dirHandle) contniue; while(($file = readdir($dirHandle)) !== false) { if($file != '.' && $file != '..') { $path = $directory.$file; if(is_file($path)) { $md5_file = md5_file($path); if(!isset($this->files[$md5_file])) $this->files[$md5_file] = $path; else $this->other[$md5_file][] = $path; } elseif(is_dir($path)) { $xxxxx = $this->getFiles($path.DIRECTORY_SEPARATOR); if(is_array($xxxxx) && !empty($xxxxx)) { if(!empty($xxxxx['file'])) $files = array_merge($files,$xxxxx['files']); if(!empty($xxxxx['other'])) $files = array_merge($files,$xxxxx['other']); } } } } return ['files'=>$this->files,'other'=>$this->other]; }}$files = (new filesss())->getFiles();echo "<pre>";print_r($files);
一个是我写的
$dir = "F:/phpstudy/WWW/test"; //要获取的目录 //$dir = "F:/phpstudy/WWW"; function deepScanDir($dir) { $fileArr = array (); $dirArr = array (); $arr = array(); $newarray = 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] = md5_file($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); } return array ( // 'dir' => $dirArr, 'file' => $fileArr );}echo "<pre>";$file=deepScanDir($dir);print_r($file);print_r(array_unique($file['file']));
阅读全文
0 0
- PHP面试之文件夹下内容重复的文件去重
- Linux文件内容去重
- Java之遍历文件夹下的文件,以及读取内容并Copy到另一文件夹下
- PHP 遍历文件夹下的内容
- php 删除文件夹下的内容
- 去重,重复的去掉
- PHP 二维数据去重复值方法(去重)
- Python入门:文件内容去重操作
- Python入门:文件内容去重操作
- 文件内容去重及排序
- Linux下大文件的排序和去重复
- PHP重命名文件夹下的文件后缀名
- 提取不重复的整数(去重)
- linux下批量修改存有超大数据量IP文件中的IP内容以及去重排序
- php 遍历一个文件夹下的所有文件和文件夹
- PHP删除文件夹及文件夹下的所有文件
- php遍历某文件夹下的所有文件和文件夹
- PHP删除文件夹及文件夹下的所有文件
- JAVA笔记-14
- OpenStack Newton版本部署----计算服务(nova)
- Algorithm头文件中的sort函数使用
- C++随记(一)---字符串数组的输入问题
- faster rcnn解析之stage1_rpn_solver60k80k.pt
- PHP面试之文件夹下内容重复的文件去重
- IO输出输入流
- NYOJ-353 3D地图搜索
- C++字符串数组
- 360浏览器下自动填写用户名密码惹祸了
- Count of Smaller Numbers After Self
- POJ2676
- SPOJ
- androidSudio学习网站