个人电脑文件目录变更日志小程序
2011-10-30 21:50 PHP淮北 阅读(1979) 评论(4) 编辑 收藏 举报前言:
有感于园友的电影目录对比工具《技术改变生活——电影目录核对工具(php)》,实现电影文件内容变更,自己尝试写了一个个人文件目录的变更日志小程序
正文
实现功能:
- 实现子文件的文件读取,只写了两级,多级的话循环调就可以了
- 文件目录生成(使用序列化的格式,可以当作文件日志,当然你可以可以生成好看的排版格式)
- 文件变更对比,(本以为使用array_diff很容易实现,结果不知道返回值总是空,蛋疼,希望高手尝试一下)
- 推荐两个万能的电影搜索工具(电影爱好者必备)
直接上代码吧:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <?php /*扫描指定目录下文件 返回数组 */ function mydir( $dir ){ $myfile = scandir( $dir ,1); foreach ( $myfile as $k => $v ){ if ( is_dir ( $dir . "/" . $v )==true&& $dir . "/" . $v != $dir . "/" . "." && $dir . "/" . $v != $dir . "/" . ".." ){ $sondir = $dir . "/" . $v ; $sonfile = scandir( $sondir ); foreach ( $sonfile as $kk => $vv ) $result [ $k ][ $kk ][ 'filename' ] = $vv ; // $result[$k][$kk]['filesize'] = filesize($vv);//文件大小 单位字节 $result [ $k ][ $kk ][ 'filectime' ] = date ( "Y-m-d H:i:s" , filectime ( $sondir . "/" . $vv )); $result [ $k ][ $kk ][ 'fileatime' ] = date ( "Y-m-d H:i:s" , fileatime ( $sondir . "/" . $vv )); //上次访问时间 } else { $result [ $k ][ 'filename' ] = $v ; //文件名称 // $result[$k]['filesize'] = filesize($v);//文件大小 单位字节 // $result[$k]['fileowner'] = fileowner($v);//文件属于者 $result [ $k ][ 'filectime' ] = date ( "Y-m-d H:i:s" , filectime ( $dir . "/" . $v )); //创建时间 $result [ $k ][ 'fileatime' ] = date ( "Y-m-d H:i:s" , fileatime ( $dir . "/" . $v )); //上次访问时间 } } return $result ; } //测试 $mydir = mydir( "F:\电影\Youku视频" ); $array = serialize( $mydir ); //序列化存储 $fp = fopen ( "data.txt" , "a" ); //每次变化都追加到文件尾端写入(相当于日志) if (fwrite( $fp , $array )){ echo "文件日志生成ok" ; fclose( $fp ); } |
测试截图:
扫描文件夹使 用scandir可以直接扫描出文件夹信息,但是会默认出现本一级和上一级目录,所以在子集循环的时候排除了$dir."/".$v !=$dir."/"."."&&$dir."/".$v !=$dir."/"."..",由于是在win上面一些数据返回值意义不大,如文件属于者等等,
如果是视频类的文件可以安装php—ffmpeg来读取视频文件的大小 格式 分辨率 时常 等等信息,类似暴风读取视频的效果。参考:利用Ffmpeg获得flv视频缩略图和视频时间 获得视频时间总长度的另一种方法
日志存储:本文以序列化的格式存储,主要是节约存储文本大小,当然你也可以使用字符串的格式存储,那样可以起来比较好看。每次文件变更都会记录下来,生成日志@
读取和分析日志的方法:
$file = file_get_contents("data.txt");
$array = unserialize($file);//反序列化
echo "<pre/>";
print_r($array);
本想生成两个日志对比一下,使用array_diff对比数组差异不知道怎么回事,返回值总是为空,求解释!!
还是直接使用文本对比工具吧!推荐:
Compare It! 4.1b特色的文件直观比较、修改、合并工具┊汉化绿色特别版http://www.greendown.cn/soft/2860.html
在这里闲扯两句:看到很多人有硬盘什么几T大小,说实话我到现在都没有买过U盘,我的电脑320G的,我的还空着150多G,对于普通电影的话优酷上就可以看了,也没有必要下载,如果你想看非常规的电影在这里我推荐几个电影搜索工具,不过它是动作片 爱情片 奇幻片。。。貌似还没有找到过,除非他没有上传到互联网,本人这边的下载速度一般1-2M左右,公司的速度10M所以基本上不需要下电影,电影资源一搜就找到,另外如果你是一个重度Greader,一般的大片都会这第一时间看到下载资源,实在不需要收藏什么特别的电影,好了推荐的下载工具:http://dl.pconline.com.cn/download/83968.html
http://dl.pconline.com.cn/download/84876.html
本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名:PHP10086博客网(PHP淮北):http://www.php10086.com,也可以邮件与我联系。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述