• 一段小代码


    <?php
    
    echo "<pre>";
    
    //定义想要删除视频的目录
    $path = str_replace('\', '/', 'F:programutorrent2.02downloads');
    
    //更改工作路径
    chdir($path);
    
    /**function name:del;
     *@param path, delete root directory;
     *@param depth, (递归深度)
     */
    function del($path,$depth = 0){
        //打开目录,获得文件句柄
        $dir_handle = opendir($path);
        //开始遍历
        while (false !== $file = readdir($dir_handle)) {
            //忽略‘.’跟‘..’
            if ($file == '.' || $file == '..') {
                continue;
            }
            //判断当前文件是否为一个目录,是则递归
            if (is_dir($path.'/'.$file)) {
    
                del($path.'/'.$file,$depth + 1);
    
            }else{
                //不是一个文件则判断是否为视频
                if (strstr($file,'.itcast') || strstr($file,'.avi') || strstr($file,'.mp4')) {
                //转换绝对路径字符编码(不含文件名)
                    @$path = iconv('utf-8','gbk',$path);
                //拼凑出文件完整的绝对路径        
                    $video = $path.'/'.$file;
                //删除
                    @unlink($video);
    
                }
            }
            //判断是否为视频文件夹
            if($file == 'video' || $file == 'vedio'){
                //是则删除
                @rmdir($path.'/'.$file);
            }
            //输出文件名
            echo str_repeat('-', $depth * 5),$file,"<br />";        
        }
    }
    
    //调用函数
    del($path);

      前两天看着F盘快要爆盘了,就想着把它清理一下,把传智的视频都删掉,忽然想起来我学过的递归遍历目录,还有删除文件和文件夹,那么我也可以试一下递归删除视频啊~

      好,想到就马上行动,我首先把递归遍历目录的函数写了出来,然后因为怕发生一些不可预料的错误,就另外写一个小脚本尝试单独的删除一个视频,但由于视频名称是中文的,不能删,我到网上查资料,发现需要用到一个编码转换函数iconv(),然后就成功了。之后我在递归函数里面删除,发现系统分别爆了两个错误,说我iconv()和unlink()都使用不正确。我调试了好多次都不行。到了今天晚上,我询问了辅导员,原来出错的原因是我先把文件的路径先拼凑好再去转换编码,但由于目录(utf-8)和中文文件名(gbk)使用的编码不一样,所以iconv()转换不成功。最后的解决方案就是先把目录转换为gbk,再和中文文件名拼凑一起,就可以了。

      然后我想起了一句话:伟大的程序员都懒惰。

  • 相关阅读:
    C#,asp.net,命名空间名,类名,方法名的获得
    asp.net引用用户控件
    SQL数据是否存在(是否有数据)判断,表,存储过程是否存在
    asp:Button 事件,点击事件 html Button runat="sever"
    CSS图片最大大小限制
    asp.net 路径
    Js实现网站的重定向,Js转向网址,Js跳转
    ViewState 页面状态保留
    vs 附加到进程
    sql XML处理,sp_xml_preparedocument,openxml
  • 原文地址:https://www.cnblogs.com/trustme326/p/6193286.html
Copyright © 2020-2023  润新知