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");
?>