文件处理函数
[$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);
}
统计目录大小【得自定义函数,不自带】
/**function dirSize($dir){
* 统计文件夹大小[也可以统计文件]
* @param 文件夹的目录路径
* @return 返回该目录的大小
*/
$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.
fi
le_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']) //检查是否合法
注意:
html:form: method="post" ;enctype="multipart/form-data"
文件下载
header('content-disposition:attachment;filename='.basename($filename));//表示附件方式下载
header('content-length:'.filesize($filename));
readfile($filename);