php文件操作函数

<?php

/*

 Type:getFile function
 Date:2016/2/2

*/
date_default_timezone_set('PRC');
function getFile($filename)
{
    if(!file_exists($filename))
    {
        echo "{$filename},不存在!";
    }
    else
    {
        echo "{$filename}类型为".filetype($filename).'<br>'.'大小为:'.getFileSize(filesize($filename)).'<br>'.'创建时间为:'.date('Y-m-d H:i:s',filectime($filename)).'<br>'.'最后一次修改时间为:'.date('Y-m-d H:i:s',filemtime($filename)).'<br>'.'最后一次访问时间为'.date('Y-m-d H:i:s',fileatime($filename)).'<br>';
    }
    if(is_dir($filename))
    {
        echo "{$filename}是一个目录!".'<br>';
    }
    if(is_file($filename))
    {
        echo "{$filename}是一个文件!".'<br>';
    }
    if(is_readable($filename) && is_writeable($filename))
    {
        echo "{$filename}可读!也可以写!".'<br>';
    }
    if(is_executable($filename))
    {
        echo "{$filename}可执行!".'<br>';   //测试出现了问题, 该函数有可能在清除缓存后也会存在判断错误的问题。。
    }
}
function getFileSize($filesize)
{
    $company = 'Byte';
    if($filesize>=pow(2,40))
    {
        $filesize = round($filesize/pow(2,40),2);
        $company = 'TB';
    }
    else if($filesize>=pow(2,30))
    {
        $filesize = round($filesize/pow(2,30),2);
        $company = 'GB';
    }
    else if($filesize>=pow(2,20))
    {
        $filesize = round($filesize/pow(2,20),2);
        $company = 'MB';
    }
    else if($filesize>=pow(2,10))
    {
        $filesize = round($filesize/pow(2,20),2);
        $company = 'KB';
    }
    else
    {
        $company = 'Byte';
    }
    return $filesize.$company;
}
getFile('test.txt');

讲讲那个计算文件大小的, 首先是, 这个计算是按相对计算的, 因为空间没有绝对大小, 每个硬件厂商的计算标准都不同, 比如第一个, 2的40次方为1099511627776(B), 又知道了, 计算的级别单位为1024, 比如1mb = 1024kb, 故计算TB就为1024*1024*1024*1024*1024 (B,KB,MB,GB,TB), 如果符合大于或者等于的这个条件, 就进入该结果, 把company重新赋值为TB, 依次类推, 最后返回传入的大小.最终的单位。使用round精确到2位里面给一个除法的也很好理解, 就是比如如果不大于等于2的40次方,就会进入下一个循环,然后直到找到符合条件的,计算和传入的都是B,比如到MB符合了,传入的为 1148576,那么进入循环体,经过计算后,结果就约等于1MB。 那个is_executable函数我在实际使用的时候遇到了问题, 就是突然失效了。。

此条目发表在php分类目录,贴了, , , , 标签。将固定链接加入收藏夹。