文件管理类(暂时只写了读取,因为不知道在项目中在哪里使用)

来源:-

微笑de迪妮莎

2015-02-25 13:34

<?php
/*****************
*    fileOnLineManager.class.php
*    文件在线管理类
*
*****************/
class FileOnLineManager{
    private $path;//指定管理的目录

    public function __construct($var_path){
        $this->path=$var_path;
    }
    
    /*
    *    @function 获得文件及目录列表
    *    @param string $path 指定目录
    *    @return array
    */
    public function getFileAndDirectory($path){
        $resource=opendir($path);
        $arr=array();
        while(($item=readdir($resource))!==false){
            if($item!="." && $item!=".."){
                if(is_dir($path."/".$item)){
                    //$arr["dir"][]=$item;
                    $var_dir_pathname=$path."/".$item;
                    $row["name"]=$item;
                    $row["type"]=$this->getFileType($var_dir_pathname);
                    $row["size"]=$this->getDirectorySize($var_dir_pathname);
                    $row["is_readable"]=$this->getFileReadable($var_dir_pathname);
                    $row["is_writeable"]=$this->getFileWriteable($var_dir_pathname);
                    $row["is_executable"]=$this->getFileExecutable($var_dir_pathname);
                    $row["ct"]=$this->getFileCtTime($var_dir_pathname);
                    $row["mt"]=$this->getFileMtTime($var_dir_pathname);
                    $row["at"]=$this->getFileATime($var_dir_pathname);
                    $arr[]=$row;
                }
                if(is_file($path."/".$item)){
                    //$arr["file"][]=$item;
                    $var_file_pathname=$path."/".$item;
                    $row["name"]=$item;
                    $row["type"]=$this->getFileType($var_file_pathname);
                    $row["size"]=$this->getFileSize($var_file_pathname);
                    $row["is_readable"]=$this->getFileReadable($var_file_pathname);
                    $row["is_writeable"]=$this->getFileWriteable($var_file_pathname);
                    $row["is_executable"]=$this->getFileExecutable($var_file_pathname);
                    $row["ct"]=$this->getFileCtTime($var_file_pathname);
                    $row["mt"]=$this->getFileMtTime($var_file_pathname);
                    $row["at"]=$this->getFileATime($var_file_pathname);
                    $arr[]=$row;
                }
            }
        }
        closedir($resource);
        return $arr;
    }

    /*
    *    @function 获取文件类型
    */
    public function getFileType($var_file_pathname){
        return filetype($var_file_pathname);
    }
    
    /*
    *    @function 获得文件大小
    *    @param string $var_file_pathname 文件的完整路径名
    *    @return string
    */
    public function getFileSize($var_file_pathname){
        $size=filesize($var_file_pathname);
        return $this->transSize($size);
    }
    
    /*
    *    @function 转换文件大小单位
    *    @param int $var_size
    *    @return string
    */
    public function transSize($var_size){
        $size=$var_size;
        $row=array("byte","KB","MB","GB","TB");
        $i=0;
        while($size>=1024){
            $size=$size/1024;
            $i++;
        }
        $result=round($size,2).$row[$i];
        return $result;
    }

    /*
    *    @function 获得文件是否可读
    *    @param string $var_file_pathname
    *    @return boolean 返回true表示可读,false表示不可读
    */
    public function getFileReadable($var_file_pathname){
        if(is_readable($var_file_pathname)){
            return true;
        }
        else{
            return false;
        }
    }

    /*
    *    @function 获得文件是否可写
    *    @param string $var_file_pathname
    *    @return boolean 返回true表示可写,false表示不可写
    */
    public function getFileWriteable($var_file_pathname){
        if(is_writeable($var_file_pathname)){
            return true;
        }
        else{
            return false;
        }
    }
    
    /*
    *    @function 获得文件是否可执行
    *    @param string $var_file_pathname
    *    @return boolean 返回true表示可执行,false表示不可执行
    */
    public function getFileExecutable($var_file_pathname){
        if(is_executable($var_file_pathname)){
            return true;
        }
        else{
            return false;
        }
    }

    /*
    *    @function 获得文件inode的修改时间
    *    @param string $var_file_pathname
    *    @return int|false 返回int时间戳,返回false表示获取失败
    */
    public function getFileCtTime($var_file_pathname){
        return filectime($var_file_pathname);
    }

    /*
    *    @function 获得文件修改时间
    *    @param string $var_file_pathname
    *    @return int|false 返回int时间戳,返回false表示获取失败
    */
    public function getFileMtTime($var_file_pathname){
        return filemtime($var_file_pathname);
    }

    /*
    *    @function 获得文件的访问时间
    *    @param string $var_file_pathname
    *    @return int|false 返回int时间戳,返回false表示获取失败
    */
    public function getFileATime($var_file_pathname){
        return fileatime($var_file_pathname);
    }

    /*
    *    @function 获取目录大小
    *    @param string $var_dir_pathname
    *    @return string
    */
    public function getDirectorySize($var_dir_pathname){
        $sum=0;
        global $sum;
        $handler=opendir($var_dir_pathname);
        while(($item=readdir($handler))!==false){
            if($item!="." && $item!=".."){
                if(is_dir($var_dir_pathname."/".$item)){
                    $this->getDirectroySize($var_dir_pathname."/".$item);
                }
                if(is_file($var_dir_pathname."/".$item)){
                    $sum+=filesize($var_dir_pathname."/".$item);
                }
            }
        }
        closedir($handler);
        return $this->transSize($sum);
    }
}
$path="./file";
$fileOnLineManager=new FileOnLineManager($path);
$result=$fileOnLineManager->getFileAndDirectory($path);
print_r($result);
?>


写回答 关注

1回答

  • King
    2015-03-01 11:06:38
    已采纳

    像一些二次开发系统中就很常见,可以通过web的形式修改源代码,管理项目中的文件

    ^-^...

    微笑de迪妮...

    呵呵,我没有二次开发系统的经验,现在做的项目是在局域网里通过Svn进行管理。​谢谢,king老师

    2015-03-02 15:05:38

    共 1 条回复 >

WEB在线文件管理器

通过本课程文件目录函数库的学习,让你掌握文件、目录函数库的应用

36223 学习 · 332 问题

查看课程

相似问题