php 關於如何處理資料夾與檔案的問題

php 判斷資料夾是否為空

function isDirEmpty($dir) {
    $handle = opendir($dir);
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            closedir($handle);
            return FALSE;
        }
    }
    closedir($handle);
    return TRUE;
}

資料來源

判斷資料夾底下是不是只有一個資料夾,這裡用傳統的 scandir 去處理。 如果不是,傳回 false,如果是,傳回該資料夾 full path

function isDirOnlyIncludeOneFolder($dir){
    $fileList = scandir($dir);    
    if( count($fileList) >= 4 ){
        return false;
    }else{
        foreach($fileList as $file){
            if( $file === '.' ){ continue; }
            if( $file === '..' ){ continue; }
            if( is_dir("{$dir}{$file}") ){
                return "{$dir}{$file}";
            }else{
                return false;
            }
        }
    }
}

php 移除這個資料夾底下所有空的資料夾,這裡就不用 scandir 了,改用 php 後來提供的 DirectoryIterator,以及使用了遞迴( recursive ) 的方式去處理

function RemoveEmptySubFolders($path){
    $empty = true ;

    $i = new DirectoryIterator($path);
    foreach($i as $f) {
        if($f->isFile()) {
            $empty = false;
        } else if(!$f->isDot() && $f->isDir()) {
            if( !RemoveEmptySubFolders($f->getRealPath()) ){
                $empty = false;
            }
        }
    }
    
    if($empty){
        rmdir($path);
    }

    return $empty;
}
Share Comments
comments powered by Disqus