php 지정 한 폴 더 의 인 스 턴 스 설명 삭제

1.머리말
대상:php 지정 한 디 렉 터 리 삭제
사용 하 는 php 함수:isdir,opendir,readdir,scandir,rmdir,closed ir 등(주:다른 파일 작업 함수 도 완성 할 수 있 습 니 다.여 기 는 이번 함수 만 열거 되 어 있 습 니 다)
2.관련 함수 소개
php 파일 을 조작 하 는 방법 은 대체적으로 같 습 니 다.이미 전편 에서 소 개 했 습 니 다.여 기 는 중복 소개 가 아 닙 니 다.여기 서 새로운 함 수 를 소개 합 니 다.
rmdir

자세 한 내용 참고:http://www.w3school.com.cn/php/func_filesystem_rmdir.asp
3.코드 구성

**
 * [delAllFile description]       
 * @param [type] $dirName [description]   
 * @param [type] $file [description]        
 * @param integer $type [description]           ,        
 * @return [type]   [description]
 */
public function delAllFile($dirName, $file, $type = 1) {
 $re = $this->checkDir($dirName);
 //         
 if($type){
 $file = fopen($file, 'w');//      
 }
 if($re){
 $this->delFile($dirName, $file);
 }else{
 fwrite($file,"{$dirName}    \r
"); } }

/**
 * [checkDir description]          ,      
 * @param [type] $dirName [description]     
 * @return [type]   [description]
 */
private function checkDir($dirName) {
 $a = scandir($dirName);//   images          :
 //   . ..           
 if(sizeof($a) == 2){
 rmdir($dirName);
 return false;
 }
 return true;
}
/**
 * [delFile description]        
 * @param [type] $dirName [description]   
 * @param [type] $file [description]      
 * @return [type]   [description]
 */
private function delFile($dirName, $file) {
 $dh = openDir($dirName);
 while($handle = readdir($dh)){
 if($handle == '.' || $handle == '..') {
 continue;
 }
 $resource = $dirName.'/'.$handle;
 //        
 if(is_dir($resource)) {
 //         
 $re = $this->checkDir($dirName);
 if($re){
 $this->delAllFile($resource, $file, 0);
 }else{
 fwrite($file,"{$resource}    \r
"); continue; } }else{ unlink($resource); } } // , closedir($dh);// fwrite($file,"{$dirName} \r
"); rmdir($dirName);// }
그러나 위의 코드 가 하위 디 렉 터 리 의 등급 이 높 을 때 경고 가 나타 나 디 렉 터 리 를 삭제 할 수 없습니다.

따라서 등급 이 높 은 부분 집합 에 대해 마지막 에 순환 판단 을 추가 하여 삭제 할 수 있 는 지 여 부 를 판단 하여 이 오 류 를 피해 야 한다.

// //    ,    
// closedir($dh);//       
// fwrite($file,"{$dirName}    \r
"); //rmdir($dirName);// // , $i = 1; while($i){ $re = $this->checkDir($dirName); echo "$dirName $i <br/><hr/>"; $i++; if(!$re){ $i = 0; closedir($dh);// fwrite($file,"{$dirName} \r
"); } }
게다가 이 층 은 삭제 할 수 없 는 상황 을 피 할 수 있 습 니 다.
4.결어
디 렉 터 리 를 삭제 하 는 것 은 상대 적 으로 간단 합 니 다.기본 절 차 는 다음 과 같 습 니 다.
1.디 렉 터 리 인지 여 부 를 판단 하고 디 렉 터 리 는 자신 을 재 귀적 으로 호출 합 니 다.그렇지 않 으 면 파일 을 직접 삭제 합 니 다.
2.디 렉 터 리 가 비어 있 는 지 판단 하고 빈 rmdir 가 아 닌 경우 오류 가 발생 합 니 다.
3.파일 권한 의 문제(window,이것 은 문제 가 아 닙 니 다)
이 phop 에서 지정 한 폴 더 를 삭제 하 는 인 스 턴 스 설명 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 가 되 고 많은 응원 바 랍 니 다.

좋은 웹페이지 즐겨찾기