代码改变世界

个人电脑文件目录变更日志小程序

  PHP淮北  阅读(1979)  评论(4编辑  收藏  举报

前言:

有感于园友的电影目录对比工具《技术改变生活——电影目录核对工具(php)》,实现电影文件内容变更,自己尝试写了一个个人文件目录的变更日志小程序

正文

实现功能:

  1. 实现子文件的文件读取,只写了两级,多级的话循环调就可以了
  2. 文件目录生成(使用序列化的格式,可以当作文件日志,当然你可以可以生成好看的排版格式)
  3. 文件变更对比,(本以为使用array_diff很容易实现,结果不知道返回值总是空,蛋疼,希望高手尝试一下)
  4. 推荐两个万能的电影搜索工具(电影爱好者必备)

直接上代码吧:

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);
    }

测试截图:

QQ截图20111030211733

扫描文件夹使 用scandir可以直接扫描出文件夹信息,但是会默认出现本一级和上一级目录,所以在子集循环的时候排除了$dir."/".$v !=$dir."/"."."&&$dir."/".$v !=$dir."/"."..",由于是在win上面一些数据返回值意义不大,如文件属于者等等,

如果是视频类的文件可以安装php—ffmpeg来读取视频文件的大小 格式 分辨率 时常 等等信息,类似暴风读取视频的效果。参考:利用Ffmpeg获得flv视频缩略图和视频时间   获得视频时间总长度的另一种方法

日志存储:本文以序列化的格式存储,主要是节约存储文本大小,当然你也可以使用字符串的格式存储,那样可以起来比较好看。每次文件变更都会记录下来,生成日志@

QQ截图20111030211823

 

读取和分析日志的方法:

$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

 

 

 

 

编辑推荐:
· 如何编写易于单元测试的代码
· 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的设计模式综述
点击右上角即可分享
微信分享提示