标签: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 文件操作
原文地址:http://marvin89.blog.51cto.com/9163436/1788155