@目录操作的相关函数
#打开目录
$dir = opendir('./wanghui_demo');
var_dump($dir);
#读取目录
$file_name = readdir($dir);
var_dump($file_name);
$file_name = readdir($dir);
var_dump($file_name);
#关闭目录
closedir($dir);
#创建目录
mkdir('wanghui_demo');
if (!file_exists('wanghui_demo')){
mkdir('wanghui_demo');//(如果不存在就创建) else{
echo '目录存在';
}
//嵌套方式创建目录
格外加两个参数 (权限\true)
0777 是最高权限 设置为true表示允许嵌套的方式创建 默认为false
mkdir('./wanghui/wang/hui',0777,true);
#删除目录
rmdir('wanghui_demo'); //只能删除一个空目录
#返回路径中目录部分
dirname();
$dir_name= dirname();
var_dump($dir_name);
#返回路径中文件名称
basename();
$base_name= basename();
var_dump($base_name);
#获取路径信息
pathinfo(); // 返回一个数组,数组中包含目录部分.文件部分.文件后缀.文件名称
$path = 'wanghui.com/88/01_wanghui.php'//定义一个路径
$info=pathinfo($path);
var_dump($info);
@统计目录和文件个数
header('Content-type:text/html;charset=utf-8');
//统计目录个数和文件个数
$path = './wanghui_demo';
//目录个数
$dirnum = 0;
//文件个数
$filenum = 0;
function total ($path,&$dirnum,&$filenum){ //一定要记得加&
//打开目录
$dir = opendir($path);
//读取目录
while($filename = readdir($dir)){
//过滤掉'.'和'..'
if($filename !='.' && $filename !='..'){
//拼接完整路径信息
$newPath = $path.'/'.$filename; //这里是filename不是newPath!
// echo $filename."<br>";
//判断读取的内容是文件还是目录
if(is_dir($newPath)){
//调用自身函数
total ($newPath,$dirnum,$filenum);
//目录数++;
$dirnum ++; //关闭 目录就相当于一个函数完事,就+1,继续判断下一个目录或文件
} else {
//如果是文件 则让文件个数+1
$filenum ++;
}
}
}
closedir($dir);//关闭is_dir($newPath)就完成一次,然后又判断
}
total($path,$dirnum,$filenum); //调用此函数echo才有结果
echo '目录个数为:'.$dirnum.'<br/>';
echo "文件个数为:".$filenum.'<br/>';
@删除目录
header(‘Content-type:text/html;charset=utf-8’);
//删除 rmdir 只能删除一个空目录
$path = ‘./wanghui_demo’;
delDir($path);
function delDir($path){
//打开目录
d
i
r
=
o
p
e
n
d
i
r
(
dir = opendir(
dir=opendir(path);
//读取目录
while($filename = readdir($dir)){
//过滤.和..
if($filename != '.' && $filename != '..'){
//拼接路径
$newPath = $path.'/'.$filename;
//判断是否是目录
if(is_dir($newPath)){
delDir($newPath);
}else{
unlink($newPath);
echo '删除文件'.$newPath.'成功<br>';
}
}
}
//关闭目录
closedir($dir);
//删除空目录
rmdir($path);
echo '删除目录'.$path.'成功<br>';
}
@遍历目录
header('Content-type:text/html;charset=utf-8');
myDir('./demo');
function myDir($path){
//打开目录
$dir = opendir($path);
//读取目录
while($filename = readdir($dir)){
//过滤.和..
if($filename != '.' && $filename != '..'){
//拼接路径
$newPath = $path.'/'.$filename;
//判断是否是目录
if(is_dir($newPath)){
echo '<font size = "5" color = "green">目录为:</font>'.$newPath.'<br>';
myDir($newPath);
}else{
echo '<font size = "2" color = "blue">文件为</font>'.$newPath.'-------文件大小为:'.filesize($newPath).'<br>';
}
}
}
echo "<hr>";
closedir ($dir);
}
@移动和重命名目录
header('Content-type:text/html;charset=utf-8');
//移动和重命名目录
renameDir('./demo','./php_dirdemo');
function renameDir($dirsrc,$dirto){
//判断目标是不是目录
if(is_file($dirto)){
echo '目标不是目录创建失败';
return;
}
//判断目标目录是否存在
if(!file_exists($dirto)){
mkdir($dirto);
echo '创建目标目录'.$dirto.'成功<br>';
}
//打开目录
$dir = opendir($dirsrc);
//读取目录
while($filename = readdir($dir)){
//过滤.和..
if($filename != '.' && $filename != '..'){
//拼接源路径
$path1 = $dirsrc.'/'.$filename;
//拼接新路径
$path2 = $dirto.'/'.$filename;
//判断源路径是目录还是文件
if(is_dir($path1)){
renameDir($path1,$path2);
}else{
rename($path1,$path2);
echo '移动文件'.$path1.'成功<br>';
}
}
}
closedir($dir);
rmdir($dirsrc);
}
@统计目录大小
header('Content-type:text/html;charset=utf-8');
//统计目录的大小;
//注意:目录本身没有大小,目录的大小是目录里面文件大小的累加和
$size= dirSize('./dirdemo');
$size = tosize($size);
var_dump($size);
//把文件函数转换嵌套进去
function dirSize($dirname){
//定义一个目录的大小
$dirsize = 0;
//打开目录
$dir = opendir($dirname);
//读取目录
while($filename = readdir($dir)){
//过滤.和..
if($filename != '.' && $filename != '..'){
//拼接路径
$newPath = $dirname.'/'.$filename;
//判断是文件还是目录
if(is_dir($newPath)){
$dirsize += dirSize($newPath);
//因为dirSize($newPath)会返回一个值,要用$dirsize加上这个值,这个值是else里面的值
}else{
$dirsize += filesize($newPath);
}
}
}
//关闭目录
closedir($dir);
return $dirsize; //一定要在末尾加上return $dirsize不然就会返回NULL
}
//1024 byte = 1kb
//1024 kb = 1mb
//1024 mb = 1gb
//文件大小转换函数
function tosize($size){
if($size > pow(1024, 3)){
$dw = 'GB';
$size = round($size/pow(1024, 3),2);
}elseif ($size > pow(1024, 2)) {
$dw = 'MB';
$size = round($size/pow(1024, 2),2);
}elseif($size > 1024){
$dw = 'KB';
$size = round($size/1024,2);
}else{
$dw = 'byte';
}
return $size.$dw;
}
@复制目录
header('Content-type:text/html;charset=utf-8');
myCopy ('./dirdemo','./dirdemo_copy');
function myCopy($dirsrc,$dirto){
//判断目标是否是目录
if(is_file($dirto)){
echo '复制目标不是目录复制失败';
return;
}
//判断目标目录是否存在
if(!file_exists($dirto)){
mkdir($dirto);
echo '创建目录'.$dirto.'成功<br>';
}
//打开目录
$dir = opendir($dirsrc);
//读取目录
while($filename = readdir($dir)){
//过滤.和..
if($filename != '.' && $filename != '..'){
//拼接源路径
$file1 = $dirsrc.'/'.$filename;
//拼接目标路径
$file2 = $dirto.'/'.$filename;
//判断当前文件是否是目录
if(is_dir($file1)){
//调用自己
myCopy($file1,$file2);
}else{
//是文件
echo '复制文件'.$file2.'成功<br>';
copy($file1,$file2);
}
}
}
//关闭目录
closedir($dir);
}