• php创建多级目录完整封装类操作


    创建多级目录函数中调用创建指定下的指定文件的函数:

     public function create_dir($dir,$mode=0777)
        {
            return is_dir($dir) or ($this->create_dir(dirname($dir)) and mkdir($dir, $mode));
        }

    创建指定路径下的指定文件,string $path(需要包含文件名和后缀),boolean $over_write 是否覆盖文件,int $time 设置时间。默认是当前系统时间,int $atime 设置访问时间。默认是当前系统时间。函数如下中调用了create_dir创建目录函数及删除unlink_file函数:

     public function create_file($path,$over_write=FALSE,$time=NULL,$atime=NULL)
        {
            $path = $this->dir_replace($path);
            $time = empty($time) ? time() : $time;
            $atime = empty($atime) ? time() : $atime;
            if(file_exists($path) && $over_write)
            {
                $this->unlink_file($path);
            }
            $aimDir = dirname($path);
            $this->create_dir($aimDir);
            return touch($path,$time,$atime);
        }

    删除非空目录函数,说明:只能删除非系统和特定权限的文件,否则会出现错误,string$dirName目录路径,boolean$is_all是否删除所有,boolean $del_dir 是否删除目录,函数如下:

    public function remove_dir($dir_path,$is_all=FALSE)
        {
            $dirName = $this->dir_replace($dir_path);
            $handle = @opendir($dirName);
            while (($file = @readdir($handle)) !== FALSE)
            {
                if($file != '.' && $file != '..')
                {
                    $dir = $dirName . '/' . $file;
                    if($is_all)
                    {
                        is_dir($dir) ? $this->remove_dir($dir) : $this->unlink_file($dir);
                    }
                    else 
                    {
                        if(is_file($dir))
                        {
                            $this->unlink_file($dir);
                        }
                    }
                }
            }
            closedir($handle);
            return @rmdir($dirName);
        }

     替换路径中//的字符相应的字符函数:

     public function dir_replace($path)
        {
            return str_replace('//','/',str_replace('\','/',$path));
        }
     /**
         * 指定文件编码转换
         * @param string $path 文件路径
         * @param string $input_code 原始编码
         * @param string $out_code 输出编码
         * @return boolean
         */
        public function change_file_code($path,$input_code,$out_code)
        {
            if(is_file($path))//检查文件是否存在,如果存在就执行转码,返回真
            {
                $content = file_get_contents($path);
                $content = string::chang_code($content,$input_code,$out_code);
                $fp = fopen($path,'w');
                return fputs($fp,$content) ? TRUE : FALSE;
                fclose($fp);
            }
        }

    /**
    * 取得上传文件信息
    * @param $file file属性信息
    * @return array
    */

     public function get_upload_file_info($file)
        {
            $file_info = $_FILES[$file];//取得上传文件基本信息
            $info = array();
            $info['type']  = strtolower(trim(stripslashes(preg_replace("/^(.+?);.*$/", "\1", $file_info['type'])), '"'));//取得文件类型
            $info['temp']  = $file_info['tmp_name'];//取得上传文件在服务器中临时保存目录
            $info['size']  = $file_info['size'];//取得上传文件大小
            $info['error'] = $file_info['error'];//取得文件上传错误
            $info['name']  = $file_info['name'];//取得上传文件名
            $info['ext']   = $this->get_ext($file_info['name']);//取得上传文件后缀
            return $info;
        }

    /**
    * 取得文件路径信息
    * @param $full_path 完整路径
    * @return ArrayObject
    */

     public function get_file_type($path)
        {
            //pathinfo() 函数以数组的形式返回文件路径的信息。
            //---------$file_info = pathinfo($path); echo file_info['extension'];----------//
            //extension取得文件后缀名【pathinfo($path,PATHINFO_EXTENSION)】-----dirname取得文件路径【pathinfo($path,PATHINFO_DIRNAME)】-----basename取得文件完整文件名【pathinfo($path,PATHINFO_BASENAME)】-----filename取得文件名【pathinfo($path,PATHINFO_FILENAME)】
            return pathinfo($path);
        }

    /**
    * 返回指定文件和目录的信息
    * @param string $file
    * @return ArrayObject
    */

    public function list_info($file)
        {
            $dir = array();
            $dir['filename']   = basename($file);//返回路径中的文件名部分。
            $dir['pathname']   = realpath($file);//返回绝对路径名。
            $dir['owner']      = fileowner($file);//文件的 user ID (所有者)。
            $dir['perms']      = fileperms($file);//返回文件的 inode 编号。
            $dir['inode']      = fileinode($file);//返回文件的 inode 编号。
            $dir['group']      = filegroup($file);//返回文件的组 ID。
            $dir['path']       = dirname($file);//返回路径中的目录名称部分。
            $dir['atime']      = fileatime($file);//返回文件的上次访问时间。
            $dir['ctime']      = filectime($file);//返回文件的上次改变时间。
            $dir['perms']      = fileperms($file);//返回文件的权限。 
            $dir['size']       = filesize($file);//返回文件大小。
            $dir['type']       = filetype($file);//返回文件类型。
            $dir['ext']        = is_file($file) ? pathinfo($file,PATHINFO_EXTENSION) : '';//返回文件后缀名
            $dir['mtime']      = filemtime($file);//返回文件的上次修改时间。
            $dir['isDir']      = is_dir($file);//判断指定的文件名是否是一个目录。
            $dir['isFile']     = is_file($file);//判断指定文件是否为常规的文件。
            $dir['isLink']     = is_link($file);//判断指定的文件是否是连接。
            $dir['isReadable'] = is_readable($file);//判断文件是否可读。
            $dir['isWritable'] = is_writable($file);//判断文件是否可写。
            $dir['isUpload']   = is_uploaded_file($file);//判断文件是否是通过 HTTP POST 上传的。
            return $dir;
        }

    完整封装代码内容有限,请到下面下载地址去下载:http://pan.baidu.com/s/1gf4AGoF

    密码:iqun

  • 相关阅读:
    JIRA Activity Stream连接到FishEye时路径不对
    职业分析
    Doublechecked locking解析
    Wireshark基本介绍和学习TCP三次握手
    插入排序算法
    Event.observe
    前端开发工程师如何在2013年里提升自己
    addEventListener(转)
    最好的HTML 5编码教程和参考手册分享
    XSRF 的攻击与防范
  • 原文地址:https://www.cnblogs.com/sztx/p/9499770.html
Copyright © 2020-2023  润新知