PHP文件管理(2)
1. 目录的基本操作
1.1 解析目录的路径
相对路径:$path=“file/txt”
绝对路径:$path=“C:/Appserv/www/index.php”
函数
1.basename($path, “php”) : 返回路径的中文件名部分
2.dirname($path) : 返回全路径的目录名
3.s=pathinfo($path) :返回数组s[dirname],s[basename];s[extension]
1.2 遍历目录
函数
1.opendir($dirname):打开目录,返回目录句柄
2.readdir() : 接受opendir()返回目录句柄为参数,返回当前文件指针所指的文件名。
3.closedir() : 以opendir()返回的目录句柄为参数,关闭目录
4.rewinddir() :将目录指针重置目录开始处
例子:
<?php
header("Content-Type:text/html;charset=utf-8");
$num=0;
$dirname="phpMyAdmin";
$dir_handle=opendir($dirname);
echo '<table boder="0" align="center" widtn="600" cellspacing="0" cellpadding="0">';
echo '<caption><h2>目录'.$dirname.'</h2></caption>';
echo '<tr align="left" bgcolor="#cccccc">';
echo '<th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th></tr>';
while($file=readdir($dir_handle)){
$dirFile=$dirname."/".$file;
$bgcolor=$num++%2==0?'#ffffff':'#cccccc';
echo '<tr bgcolor='.$bgcolor.'>';
echo '<td>'.$file.'</td>';
echo '<td>'.filesize($dirFile).'</td>';
echo '<td>'.filetype($dirFile).'</td>';
echo '<td>'.date("Y/m/d",filemtime($dirFile)).'</td>';
}
echo '</table>';
closedir($dir_handle);
echo '在<b>'.$dirname.'</b>目录下子目录和文件共有<b>'.$num.'</b>个';
?>
glob(): 检索指定的目录;
1.3 统计目录大小
- disk_free_space(): 统计磁盘剩余大小
- disk_total_spcae(): 统计磁盘大小
统计目录大小(自定义函数)
<?php
function dirSize($directory){
$dir_size=0;
if($dir_handle=@opendir($directory)){
while($filename=readdir($dir_handle)){
if($filename!="."&&$filename!=".."){
$subFile=$directory."/".$filename;
if(is_dir($subFile));
$dir_size+=dirSize($subFile);
if(is_file($subFile)){
$dir_size+=filesize($subFile);
}
}
}
closedir($dir_handle);
return $dir_size;
}
}
$dir_size=dirSize("phpMyAdmin");
echo round($dir_size/pow(1024,1),2)."KB";
?>
可以用exec(),system()调用“du”来计算目录大小,但有安全问题;
1.4 建立和删除目录
<?php
function delDir($directory){
if(file_exits($directory)){
if($dir_handle=@opendir($directory)){
while($filename=readdir($dir_handle)){
if($filename!="."&&$filename!=".."){
$subFile=$directory."/".$filename;
if(is_dir($subFile))
delDir($subFile);
if(is_file($subFile))
unlink($subFile);
}
}
closedir($dir_handle);
rmdir($directory);
}
}
}
delDir("phpMyAdmin");
?>
1.5 复制目录
<?php
function copyDir($dirSrc,$dirTo){
if(is_file($dirTo)){
echo "目标不是目录不能创建";
return;
}
if(file_exists($dirTo)){
mkdir($dirTo);
}
if($dir_handle=@opendir($dirSrc)){
while($filename=readdir($dir_handle)){
if($filename!="."&&$filename!=".."){
$subSrcFile=$dirSrc."/".$filename;
$subToFile=$dirTo."/".$filename;
if(is_dir($subSrcFile))
copyDir($subSrcFile,$subToFile);
if(is_file($subSrcFile))
copy($subSrcFile,$subToFile);
}
}
closedir($dir_handle);
}
}
copyDir("phpMyAdmin","D:/admin");
?>