-
-
/**
- * 目錄生成類別 :UtilsMakeDir
- * @author yepeng
- * @since 2010.3.18
- */
- class UtilsMakeDir{
- //基底目錄建立目錄時不會對這個目錄進行建立。這應該是個已經存在的目錄
- private static $makeBasePath = 'video';
- private static $delBasePath = 'video';
/**
- * 遞歸建立目錄,
- * 建立成功回傳這個全路徑,
- * 建立失敗回傳false
- * @param String $pathString 路徑字串如'2/3/4/5'
- * @return false or string
public static function makeDir($pathString){
- $pathArray = explode('/',$pathString);
- if(empty( $pathArray[0])){
- return false;
- }
- $path = array_shift($pathArray);
- self::$basePath = self::$basePath.'/'.$ path;
- if(is_dir(self::$basePath)){
- $path = implode('/',$pathArray);
- self::makeDir($path);
- }
- else{
- @mkdir(self::$basePath,0777);
- $path = implode('/',$pathArray);
- self::makeDir($path);
- }
- if(is_dir(self::$basePath)){
- return self::$basePath;
- }
- else{
- return false;
- }
- }*/
- /**
- * 建立目錄,包含基底目錄,例如圖片要放在video(video為存在的目錄)下面,你傳入的參數應該是video/2/3/4
- * 建立成功返回這個全路徑,
- * 建立失敗回傳false
- * @param String $pathString 路徑字串如'video/2/3/4/5'
- * @return false 或 string
- **/
- public static function makeDir($pathString){
- $pathArray = explode('/',$pathString);
- $tmpPath = array_shift($pathArray);
- foreach ($pathArray as $val){
- $tmpPath .= "/".$val;
- if(is_dir($tmpPath)){
- continue;
- }
- else {
- @mkdir($tmpPath,0777);
- }
- }
- if(is_dir($tmpPath)){
- return $tmpPath;
- }
- }
-
- return false;
- }
- } /**
- * 遞歸刪除
- * 刪除目錄及檔案
- * 如果傳一個'video/2/3/4'這樣的路徑將刪除4下的所有目錄和檔案
- * @param string $ stringPath
- */
- public static function delDir($stringPath){
- if(!$handle = @opendir($stringPath)) {
- return false;
- }
- while (false !==($file = readdir($handle))){
- if($file !='.' && $file != ' ..'){
- $tmpdir = $stringPath."/".$file;
- if(is_dir($tmpdir)){
- self::delDir($tmpdir);
- rmdir( $tmpdir);
- }
- if(is_file($tmpdir)){
- unlink($tmpdir);
- }
- }
- }
- closedir($handle);
- }}
- ?>
複製程式碼
循環與遞歸,在winxp下測試成功,只要php檔案編碼為gb2312,檔案名稱隨意,應該把檔案名稱改為編碼為gb2312就可以了。
-
-
-
deltree('./複件複本複件複件複件複件複件aaa');
- function deltree($pathdir)
- {
- //echo $pathdir.'
';//我調試時用的
- if(is_empty_dir($pathdir))//如果是空的
- {
- rmdir($pathdir);//直接刪除
- }
- else
- {//否則讀這目錄,除了.和..外
- $d=dir($pathdir);
- while($a=$d->read()) //下只刪除$pathdir下
- {
- if(is_file($pathdir.'/'.$a) && ($a!=' .') && ($a!='..'))
- {
- unlink($pathdir.'/'.$a); //如果是檔案就直接刪除
- }elseif(is_dir ($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) //如果是目錄
- {
- if(!is_empty_dir( $pathdir.'/'.$a))//是否為空
- {
- deltree($pathdir.'/'.$a); //如果不是,請呼叫自己
- }else
- {
- rmdir($pathdir.'/'.$a); //如果空就直接刪除
- }
- }
- }
- $d->close();
- //echo "必須先刪除目錄下的所有檔案";//我調試時用的
- rmdir($pathdir);
- }
- }
- function is_empty_dir($pathdir)
- {
- //判斷目錄是否為空,我的方法不是很好吧?除了.和..之外有其他東西不是為空
- $d=opendir($pathdir);
- $i=0;
- while($a=readdir($d))
- {
- $i++;
- }
- closedir($d);
- if($i> 2){return false;}
- else return true;
- }
?>
複製程式碼
方法二
在winxp下測試成功,只要php檔案編碼為gb2312,檔案名稱隨意,應該把檔案名稱改為編碼為gb2312,就行,沒測。
-
-
header("Content-Type:text/html; charset=gb2312");
- if(deleteDir('. /複本複本複本複本複本複本複件複本複本aaa'))
- echo "刪除成功";
- function deleteDir($dir)
- {
- if (@rmdir($dir)= =false && is_dir($dir)) //刪除不了,進入刪除所有檔案
- {
- if ($dp = opendir($dir))
- {
- while (($file=readdir ($dp)) != false)
- {
- if($file!='.' && $file!='..')
- { //echo $file=$dir.'/ '.$file;echo '
';
- $file=$dir.'/'.$file;
- if (is_dir($file)) //是真實目錄
- {
- deleteDir($file);
- }else {
- unlink($file);
- }
- }
- }
- closedir($dp);
- }else
- {
- return false;
- }
- }
- if (is_dir($dir) && @rmdir($dir)==false) //目錄刪除不了
- return false;
- return true;
- }
- ?>
複製程式碼
方法三、在winxp下測試成功,是列出目錄檔案很好用。
-
-
function listDir($dir)
- {
- static $break=0; if($break++==100 ) exit;//控制深入層數
- static $i=-0;
- if(is_dir($dir))//目錄
- {
- if ($dh = opendir($dir) )//開啟
- {
- while (($file = readdir($dh)) !== false)
- {
- if((is_dir($dir."/".$file) ) && $file!="." && $file!="..")//目錄
- {
- $j=$i;while($j--) echo "------ -";
- echo "目錄名稱:".$dir."/".$file."
" ;
- $i++;
- listDir($dir."/".$file);
- $i--;
- }
- else
- {
- if($file !="." && $file!="..")
- {
- $j=$i;while($j--) echo "-------";
- $ ext=trim(extend($file));
- //if($ext=='jpg')
- echo $dir.'/'.$file."
";
- }
- }
- }
- closedir($dh);
- }
- }
- }
- function extend($file_name)
- {
- $retval="" ;
- $pt=strrpos($file_name, ".");
- if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) - $pt);
- return ($retval);
- }
- //開始運作
- listDir(".");
- ?>
複製程式碼
| 複製程式碼