php 文件处理函数总

来源:互联网 发布:易编程模块 编辑:程序博客网 时间:2024/05/16 05:06
文件处理函数
     [$file=c://php/index.php]
   基础函数
        1.file_exists($file)//文件是否存在,【true/false】

        2.filesize($file)  //返回文件的大小【大小字节/出错false】

        3.is_readale($file)//是否可读【返回bool】

        4.is_writeable($file)//是否可写【返回bool】

        5.is_executable($file)//是否可执行【返回bool】

        6.filectime($file)//文件创建时间【时间戳】

        7.filemtime($file)//文件修改时间【时间戳】

        8.fileatime($file)//文件访问时间【时间戳】

        9.stat($file)//返回文件的大部分信息【文件信息数组】

  目录的基本操作 

        1.basename($file)//返回文件名,index.php

        2.dirname($file)//返回文件的路径,c://php/

        3.pathinfo($file)//返回该文件路径的所有信息  
["dirname"目录名] ["basename"文件名] ["extension"文件后缀]
      
    目录复制,删除,统计大小使用的总结:
        本质:依靠递归思想,对目录的的循环遍历,通过每一个文件的操作,得出结果
        函数:
                复制:copy($org,$to);mkdir()
                删除:unlink($file);mrdir();
                统计大小:filesize($file)
     遍历目录
        1.opendir($file)//打开一个目录,参数为目录名或目录路径【返回资源型的目录句柄$dir_handle,无权限返false】

        2.readdir($dir_handle);//读取目录,参数为目录句柄,while,返回当前指向对象的名字,目录指针后移【返回filename,没有是返false】

        3.closedir($dir_handle)//关闭打开的目录

        4.rewinddir($dir_handle) //倒回目录句柄,将目录指针重置到目录开始    
// 遍历文件夹$path,生成TABLE
function menu_list($root_path){
$num=0;//存储条数
$dir_handle=opendir($root_path);
echo "<table border=1 cellspacing=5 cellpadding=10 align='center'>";
echo "<caption>{$root_path}文件夹</caption>";
echo "<tr>";
echo "<td>文件名</td><td>类型</td><td>大小</td><td>创建时间</td>";
echo "</tr>";
while($file_name=readdir($dir_handle)){
if($file_name =="." || $file_name=="..")continue;
$cur_path=$root_path."/".$file_name;
$bgcolor=$num++%2==0?"#FFFFFF":"#CCCCCC";
$cate=filetype($cur_path)=="dir"?"目录":"文件";
echo "<tr color={$bgcolor}>";
$file_name = iconv_change($file_name);
echo "<td>{$file_name}</td>";
echo "<td>{$cate}</td>";
echo "<td>".filesize($cur_path)."</td>";
echo "<td>".date("Y-m-d H:i:s",filectime($cur_path))."</td>";
echo "</tr>";
}
echo "<tr><td colspan=4 align=center>文件总数为:{$num}个</td></tr>";
echo "</table>";
}
      建立和删除目录
        1.mkdir("dir_name");//建立一个空的目录
        2.rmdir("dir_name");//删除一个空的目录
            unlink("file_name")//删除一个文件,当删除目录是,必须删除该目录下的文件
/**
* 删除文件夹[也可以删除文件]
* @param $root_path 该文件夹的路径
*/
function del_dir($root_path){
// echo file_exists($root_path)."--<br>";
if(!file_exists($root_path))exit('文件不存在');
if(is_file($root_path))unlink($root_path);exit;

$dir_handle=opendir($root_path);//打开此文件夹
while($cur_name=readdir($dir_handle)){//遍历文件夹
if($cur_name =="." || $cur_name=="..")continue;//删除前两个默认的
$cur_path=$root_path."/".$cur_name;
if(is_file($cur_path)){
//是文件,执行删除文件
del_file($cur_path);
}else{
//是文件夹,删除文件夹,递归
del_dir($cur_path);
}
}
closedir($dir_handle);
rmdir($root_path);
}

/*删除文件操作*/
function del_file($file_path){
return unlink($file_path);
}


      统计目录大小【得自定义函数,不自带】
/**
* 统计文件夹大小[也可以统计文件]
* @param 文件夹的目录路径
* @return 返回该目录的大小
*/
function dirSize($dir){
$dir_size=0;
if(!file_exists($dir))exit("文件不存在");
if(is_file($dir))return filesize($dir);//如果是文件,返回文件大小
$handle=opendir($dir);
while($cur_name=readdir($handle)){
if($cur_name=="." || $cur_name=="..")continue;
$cur_path=$dir."/".$cur_name;//获取当前文件的路径
if(is_file($dir)){
//如果是文件,累加文件大小到file_size
$dir_size+=filesize($cur_path);
}
if(is_dir($dir)){
//如果是文件夹,累加文件夹大小到file_size
$dir_size +=dirSize($cur_path);
}
}
return $dir_size;
}
/**
* 转换单位大小
* @param,data 以B为单位的字节大小
* @param,unit 转换后的单位
* @return 转换后的数字及单位,字符串格式
*/
function transform_unit($data,$unit="MB"){
$unit=strtoupper($unit);
switch ($unit) {
case 'B':
$data=$data/pow(1024, 0);
break;
case 'KB':
$data=$data/pow(1024, 1);
break;
case 'MB':
$data=$data/pow(1024, 2);
break;
case 'GB':
$data=$data/pow(1024, 3);
break;
case 'TB':
$data=$data/pow(1024, 4);

}
return round($data,2).$unit;
}
// echo transform_unit(dirSize($path),"KB");
      复制一个目录及文件【得自定义函数,不自带】     
/**
* 复制文件夹,生成另一个文件夹
* @param $fromDir ,被复制的源文件夹
* @param $toDir,生成的文件夹名字
*/
function copyDir($fromDir,$toDir){
if(is_file($toDir))exit("目标地址不是文件夹");//不是文件夹返回提示
if(!file_exists($toDir))mkdir($toDir);//没有创建目标文件夹,创建
$handle=opendir($fromDir);//打开文件夹
while($cur_name=readdir($handle)){
$cur_path=$fromDir."/".$cur_name;//进入一层文件夹后,当前文件的路径
$cur_to_path=$toDir."/".$cur_name;//要复制的形成的路径
if($cur_name=="." || $cur_name=="..")continue;
if(is_file($cur_path)){
//若是文件复制当前文件到目的文件夹
copy($cur_path,$cur_to_path);
}
if(is_dir($cur_path)){
//若是文件夹,复制该文件夹
copyDir($cur_path,$cur_to_path);
}
}
closedir($handle);//关闭文件夹
}
// copyDir($path,"test");
  
文件的基本操作
      1.fopen($fileName,"模式字符r,w,x")//打开一个文件,【返回值为资源型$handle】
      2.fclose($handle)    //关闭打开的文件【返回BOOL】
      3.fwrite($handle,"$data")//把$data写入$handle文件,先清空后写入,【成功返回$handle,失败返回false】
      4.file_put_contents($filename,$data);//它是上边三个合起来的效果
      5.file_get_contents($filename)//读取文件里的信息【返回字符串】
      6.flock($handle,$operation)    //用$operation锁定文件$handle
        
      1.copy($file1,$file2);//赋值$file1,形成$file2【返回BOOL】
      2.unlink($file);//删除$file文件【返回BOOL】
      3.rename($file1,$file_new_name);//重命名【返回BOOL】

   文件的上传
       1.is_upload_file($_FILES['file']['tmp_name']) //检查是否合法
       2.move_upload_file($_FILES['file']['tmp_name'],$url); //上传合法文件到$url
      注意:html:form: method="post" ;enctype="multipart/form-data"
   文件下载
         header('content-disposition:attachment;filename='.basename($filename));//表示附件方式下载
         header('content-length:'.filesize($filename));
         readfile($filename);
原创粉丝点击