码迷,mamicode.com
首页 > Web开发 > 详细

php 常用文件操作方法

时间:2016-06-12 15:43:17      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:php 文件操作

<?php
header("Content-type: text/html; charset=utf-8");

###########init################
$file=‘/Users/M/Sites/demo/test.php‘;
$dir =‘/Users/M/Sites/demo‘;
$deldir =‘/Users/M/Sites/demo/js‘;

###########文件属性操作################
/*文件属性获取*/
//getFilePro($file);
/*文件路径相关*/
//getPathinfo($file);
/*磁盘大小*/
//echo tosize(disk_total_space(‘/‘));



###########文件目录操作################
/*目录遍历*/
//globDir($dir);
/*目录遍历*/
//foreachDir($dir);
/*删除文件or文件夹*/
//delDir($deldir);
/*移动 重命名*/
//rename($deldir,‘/Users/M/Sites/demo/js-marvin‘);
/*复制目录*/
//copyDir(‘/Users/M/Sites/demo/js‘,‘/Users/M/Sites/demo/js-back‘);

###########文件创建删除################
/*创建目录*/
//mkdir(‘marvin‘,0644);
/*删除空目录*/
//rmdir(‘marvin‘);
/*删除文件*/
//unlink(‘marvin‘);
/*创建空文件*/
//touch(‘marvin.txt‘);

###########文件打开方式################
/*读*/
////$handle=fopen("{$_SERVER[‘DOCUMENT_ROOT‘]}/marvin.txt",‘r‘);
//$handle=fopen(‘http://www.baidu.com‘,‘r‘);
/*写*/
//$handle=fopen("ftp://user:passwd@example.com/marvim.txt",‘w‘);

/* t文件文件 b二进制文件 默认是t
 * r    只读方式打开 文件指针指向文件头
 * r+   读写方式打开 文件指针指向文件头  保持原文件内容 写入时候从头开始替换
 * w    写方式打开   文件指针指向文件头,不存在的文件则穿件 ,清除原文件内容
 * w+   读写方式打开 文件指针指向文件头,不存在的文件则穿件 清除原文件内容
 * a    写入方式打开 文件指针指向尾部,计数从0开始 不存在就创建
 * a+   读写方式打开,文件指针指向尾部,计数从0开始 不存在就创建
 * x    创建并以写方式打开,文件指针指向文件头,如果文件存在,则失败
 * x+   创建并以读写方式打开,文件指针指向文件头,如果文件存在,则失败
 * */

/*关闭*/
//fclose($handle);


###########文件写入方式 必须是写方式打开################
//$handle=fopen(‘marvin.txt‘,‘r+‘);
//fwrite($handle,‘worldaaaa‘);

###########文件读################
//$handle=fopen(‘marvin.txt‘,‘r‘);
//while(!feof($handle))     //判断指针所在位置是否有数据  有数据返回假  无数据返回真
//    echo fgetc($handle); //fgetc:一次读一个字符 读一个指针移动一次      fgets:一次读取一行

//echo fread($handle,filesize(‘marvin.txt‘));  //第二个参数是文件长度
//while(!feof($handle))
//    echo fread($handle,1024);

###########文件指针操作################
/*移动指针位置*/
//fseek($handle,2);              //fseek($handle,-20,SEEK_END);
/*将指针初始化*/
//rewind($handle);
/*返回指针当前位置*/
//echo ftell($handle);
/*返回指针对于内容*/
//echo fgets($handle);


###########不用打开文件 文件读写################
//file_put_contents(‘marvin.txt‘,"帅帅帅\n",FILE_APPEND);//追加:FILE_APPEND   锁:LOCK_EX
//echo file_get_contents(‘marvin.txt‘);  //远程文件能读
//readfile(‘http://www.baidu.com‘);//读远程文件
//$fileArr = file(‘marvin.txt‘);//按行分割

###########文件锁################
//读锁: LOCK_SH
//写锁: LOCK_EX
//释放锁: LOCK_UN
//防止堵塞:  LOCK_SH+LOCK_NB     LOCK_EX+LOCK_NB
//flock($handle,LOCK_EX);
//flock($handle,LOCK_UN);



function getFilePro($file)
{
    if(file_exists($file))
    {
        echo ‘文件类型是 ‘.filetype($file).‘<br>‘;
        echo ‘文件大小‘.tosize(filesize($file)).‘<br>‘;

        if(is_readable($file))
            echo "文件可读<br>";
        if(is_writable($file))
            echo "文件可写<br>";
        if(is_executable($file))
            echo "文件可执行<br>";

        echo "创建时间 ".date(‘Y-m-d H:i:s‘,filectime($file)).‘<br>‘;
        echo "访问时间 ".date(‘Y-m-d H:i:s‘,fileatime($file)).‘<br>‘;
        echo "修改时间 ".date(‘Y-m-d H:i:s‘,filemtime($file)).‘<br>‘;

    }else
    {
        echo ‘文件不存在‘;
    }

}

function getPathinfo($file)
{
    echo ‘文件名为  ‘.basename($file,‘.php‘).‘<br>‘;//第二参数默认为空 文件名为 test
    echo ‘文件目录位置‘.dirname($file).‘<br>‘;//文件目录位置/Users/M/Sites/demo
    var_dump(pathinfo($file));
}

function globDir($dir)
{
    // var_dump(glob($dir.‘/*.php‘));
    $it = new DirectoryIterator("glob://{$dir}./*.php");
    foreach($it as $f)
    {
        printf("%s: %.1FK\n", $f->getFilename(), $f->getSize()/1024);
        echo ‘<br>‘;
    }
}
function foreachDir($dir,$leve=0,$mark=true)
{
    static  $static_dir;

    if(!is_dir($dir) && !is_file($dir))
        return false;
    if(is_file($dir))
    {
        echo "文件: ".$dir.‘<br>‘;
        return true;
    }
    if ($mark)
        $static_dir = rtrim($dir,‘/‘);


    $dirDesource = opendir($dir);
    readdir($dirDesource);// .
    readdir($dirDesource);// ..

    while($filename=readdir($dirDesource))
    {
        $dir = trim($dir);
        $dir = rtrim($dir,‘/‘);

        $file = $dir.‘/‘.$filename;
        if(is_dir($file)){

            if($dir==$static_dir )
                $leve=0;

            echo str_repeat(‘--‘,$leve)."目录: ".$file.‘<br>‘;
            foreachDir($file,++$leve,false);
        }
        else
            echo str_repeat(‘--‘,$leve)."文件: ".$file.‘<br>‘;
    }
    closedir($dirDesource);
}
function delDir($dir)
{
    $dir = rtrim($dir,‘/‘);
    if(!file_exists($dir))
        die(‘文件不存在‘);
    if(is_file($dir))
        unlink($dir);

    $dirResource = opendir($dir);
    readdir($dirResource);
    readdir($dirResource);

    while($filename=readdir($dirResource))
    {
        $filename=$dir.‘/‘.$filename;
        if(is_dir($filename))
            delDir($filename);
        else
            unlink($filename);
    }
    closedir($dirResource);
    rmdir($dir);
}
function copyDir($src,$dst)
{
    $src=rtrim($src,‘/‘);
    $dst=rtrim($dst,‘/‘);
    if(file_exists($dst))
    {
        if(!is_dir($dst))
            die(‘ 目标文件存在,且不是目录,无法copy‘) ;
    }else
        mkdir($dst);

    $dirResource = opendir($src);
    readdir($dirResource);
    readdir($dirResource);

    while($file=readdir($dirResource))
    {
        $srcfile=$src.‘/‘.$file;
        $dstfile=$dst.‘/‘.$file;
        if(is_dir($srcfile))
            copyDir($srcfile,$dstfile);
        else
            copy($srcfile,$dstfile);
    }
    closedir($dirResource);
}

/*
 * 1TB=10**10 GB=10**20 MB=10**30KB=10**40B=8*10**40bit
 *
 * */
function tosize($size)
{
    $units=‘‘;
    $s=‘‘;
    if($size > pow(2,40))
    {
        $s=$size/pow(2,40);
        $units=‘TB‘;
    }elseif ($size > pow(2,30))
    {
        $s=$size/pow(2,30);
        $units=‘GB‘;
    }elseif ($size > pow(2,20))
    {
        $s=$size/pow(2,20);
        $units=‘MB‘;
    }elseif ($size > pow(2,10))
    {
        $s=$size/pow(2,10);
        $units=‘KB‘;
    }else
    {
        $s=$size;
        $units=‘bypes‘;
    }
    $s=round($s,2);
    return $s.$units;
}


php 常用文件操作方法

标签:php 文件操作

原文地址:http://marvin89.blog.51cto.com/9163436/1788155

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!