文件的操作:创建文件,删除文件,重命名文件rename(),移动/复制文件,读取,大小(PHP都有内置的函数)
目录的操作:创建目录(有),删除目录,复制目录,统计目录大小,遍历(自己定义函数)
一.遍历目录
opendir()
readdir()
closedir()
rewinddir()
<?php $dirname="phpMyAdmin"; echo "文件总大小:".toSize(dirsize($dirname))."<br>"; //opendir()打开一个目录句柄 $dir=opendir($dirname); //readdir()从目录句柄中读取条目 while($fileName=readdir($dir)){ //要判断$dirname目录下的文件 $file=$dirname."./".$fileName; //删除文件读取中的“.”和“..” if($fileName!='.'&&$fileName!=".."){ //is_dir()判断的是当前目录下的文件 if(is_dir($file)){ //统计目录大小是没有内置的函数,所以我们要自己定义 echo "<font color='red'>".$fileName."---".date('Y-m-d H-i-s',fileatime($file))."------".toSize(dirsize($file))."-------<br>"; echo "</font><br>"; }else{ echo $fileName."-----".toSize(filesize($file))."------"."<br>"; } } } //closedir()关闭目录句柄 closedir($dir); //文件大小单位转换函数 function toSize($size){ $dw=""; if($size>pow(2,30)){ $size=round($size/pow(2,30),2); $dw="GB"; }else if($size>pow(2,20)){ $size=round($size/pow(2,20),2); $dw="MB"; }else if($size>pow(2,10)){ $size=round($size/pow(2,10),2); $dw="KB"; }else{ $dw="BT"; } return $size.$dw; } //统计目录大小 function dirsize($dirName){ //文件大小的初始值 $dirsize=0; $dir=opendir($dirName); while($fileName=readdir($dir)){ $file=$dirName."./".$fileName; if($fileName!="." && $fileName!=".."){ if(is_dir($file)){ //递归实现 $dirsize+=dirsize($file); }else{ $dirsize+=filesize($file); } } } closedir($dir); return $dirsize; } ?>
创建目录
mkdir();新建一个空目录
删除目录没有内置函数,要自定义
删除目录
rmdir();删除一个空目录
<?php //创建一个空目录 //mkdir("update",755); //删除目录,只能删除空目录 //rmdir("update"); $dirname="./mYphp"; deldir($dirname); function deldir($dirName){ if(file_exists($dirName)){ $dir=opendir($dirName); while($fileName=readdir($dir)){ if($fileName!="." && $fileName!=".."){ $file=$dirName."./".$fileName; if(is_dir($file)){ echo "删除目录".$file."成功!<br>"; deldir($file); }else{ unlink($file); } } } closedir($dir); rmdir($dirName); } } ?>
文件、目录的重命名和移动
rename();
<?php $dirName="./phpMyAdmin"; //文件改名 rename("$dirName", "aaa"); $dirName="./aaa"; //文件移动 rename("$dirName","../aaa"); ?>
复制目录
要自定义
<?php
/*复制目录没有内置函数,所以我们要自己定义*/
$dirname="./phpMyAdmin";
copydir($dirname,"./aaa");
//目录的复制函数
function copydir($dirsrc,$dirto){
//判断目标是否是目录
if(is_file($dirto)){
echo "目标不是目录";
return ;
}
//判断要复制到得目录是否存在
if(!file_exists($dirto)){
mkdir($dirto);
}
//打开目录
$dir=opendir($dirsrc);
while($fileName=readdir($dir)){
if($fileName!="." && $fileName!=".."){
$fileSrc=$dirsrc."./".$fileName;
$fileTo=$dirto."./".$fileName;
if(is_dir($fileSrc)){
//递归
copydir($fileSrc,$fileTo);
}else{
//文件的复制函数
copy($fileSrc, $fileTo);
}
}
}
closedir($dir);
}
?>