标签: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