PHP文件及文件夾操作(創建、刪除、移動、復制)

jopen 10年前發布 | 34K 次閱讀 PHP PHP開發

php文件及文件夾操作(創建、刪除、移動、復制)

    <?php

/** 
 * 操縱文件類 
 *  
 * 例子: 
 * FileUtil::createDir('a/1/2/3');                建立文件夾  建一個a/1/2/3文件夾 
 * FileUtil::createFile('b/1/2/3');               建立文件    在b/1/2/文件夾下面建一個3文件 
 * FileUtil::createFile('b/1/2/3.exe');           建立文件    在b/1/2/文件夾下面建一個3.exe文件 
 * FileUtil::copyDir('b','d/e');                  復制文件夾  建立一個d/e文件夾,把b文件夾下的內容復制進去 
 * FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 復制文件    建立一個b/b文件夾,并把b/1/2文件夾中的3.exe文件復制進去 
 * FileUtil::moveDir('a/','b/c');                 移動文件夾  建立一個b/c文件夾,并把a文件夾下的內容移動進去,并刪除a文件夾 
 * FileUtil::moveFile('b/1/2/3.exe','b/d/3.exe'); 移動文件    建立一個b/d文件夾,并把b/1/2中的3.exe移動進去                    
 * FileUtil::unlinkFile('b/d/3.exe');             刪除文件    刪除b/d/3.exe文件 
 * FileUtil::unlinkDir('d');                      刪除文件夾  刪除d文件夾 
 */  
class FileUtil {  

    /** 
<h5><span style="white-space:pre">  </span>* 建立文件夾</h5>     * @param string $aimUrl 
     * @return viod 
     */  
    function createDir($aimUrl) {  
        $aimUrl = str_replace('', '/', $aimUrl);  
        $aimDir = '';  
        $arr = explode('/', $aimUrl);  
        $result = true;  
        foreach ($arr as $str) {  
            $aimDir .= $str . '/';  
            if (!file_exists($aimDir)) {  
                $result = mkdir($aimDir);  
            }  
        }  
        return $result;  
    }  

    /** 
<h5>     * 建立文件</h5>     * 
     * @param string $aimUrl  
     * @param boolean $overWrite 該參數控制是否覆蓋原文件 
     * @return boolean 
     */  
    function createFile($aimUrl, $overWrite = false) {  
        if (file_exists($aimUrl) && $overWrite == false) {  
            return false;  
        } elseif (file_exists($aimUrl) && $overWrite == true) {  
            FileUtil :: unlinkFile($aimUrl);  
        }  
        $aimDir = dirname($aimUrl);  
        FileUtil :: createDir($aimDir);  
        touch($aimUrl);  
        return true;  
    }  

    /** 
<h5>     * 移動文件夾</h5>     * 
     * @param string $oldDir 
     * @param string $aimDir 
     * @param boolean $overWrite 該參數控制是否覆蓋原文件 
     * @return boolean 
     */  
    function moveDir($oldDir, $aimDir, $overWrite = false) {  
        $aimDir = str_replace('', '/', $aimDir);  
        $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';  
        $oldDir = str_replace('', '/', $oldDir);  
        $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/';  
        if (!is_dir($oldDir)) {  
            return false;  
        }  
        if (!file_exists($aimDir)) {  
            FileUtil :: createDir($aimDir);  
        }  
        @ $dirHandle = opendir($oldDir);  
        if (!$dirHandle) {  
            return false;  
        }  
        while (false !== ($file = readdir($dirHandle))) {  
            if ($file == '.' || $file == '..') {  
                continue;  
            }  
            if (!is_dir($oldDir . $file)) {  
                FileUtil :: moveFile($oldDir . $file, $aimDir . $file, $overWrite);  
            } else {  
                FileUtil :: moveDir($oldDir . $file, $aimDir . $file, $overWrite);  
            }  
        }  
        closedir($dirHandle);  
        return rmdir($oldDir);  
    }  

    /** 
<h5>     * 移動文件</h5>     * 
     * @param string $fileUrl 
     * @param string $aimUrl 
     * @param boolean $overWrite 該參數控制是否覆蓋原文件 
     * @return boolean 
     */  
    function moveFile($fileUrl, $aimUrl, $overWrite = false) {  
        if (!file_exists($fileUrl)) {  
            return false;  
        }  
        if (file_exists($aimUrl) && $overWrite = false) {  
            return false;  
        } elseif (file_exists($aimUrl) && $overWrite = true) {  
            FileUtil :: unlinkFile($aimUrl);  
        }  
        $aimDir = dirname($aimUrl);  
        FileUtil :: createDir($aimDir);  
        rename($fileUrl, $aimUrl);  
        return true;  
    }  

    /** 
<h5>     * 刪除文件夾</h5>     * 
     * @param string $aimDir 
     * @return boolean 
     */  
    function unlinkDir($aimDir) {  
        $aimDir = str_replace('', '/', $aimDir);  
        $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';  
        if (!is_dir($aimDir)) {  
            return false;  
        }  
        $dirHandle = opendir($aimDir);  
        while (false !== ($file = readdir($dirHandle))) {  
            if ($file == '.' || $file == '..') {  
                continue;  
            }  
            if (!is_dir($aimDir . $file)) {  
                FileUtil :: unlinkFile($aimDir . $file);  
            } else {  
                FileUtil :: unlinkDir($aimDir . $file);  
            }  
        }  
        closedir($dirHandle);  
        return rmdir($aimDir);  
    }  

    /** 
<h5>     * 刪除文件</h5>     * 
     * @param string $aimUrl 
     * @return boolean 
     */  
    function unlinkFile($aimUrl) {  
        if (file_exists($aimUrl)) {  
            unlink($aimUrl);  
            return true;  
        } else {  
            return false;  
        }  
    }  

    /** 
<h5>     * 復制文件夾</h5>     * 
     * @param string $oldDir 
     * @param string $aimDir 
     * @param boolean $overWrite 該參數控制是否覆蓋原文件 
     * @return boolean 
     */  
    function copyDir($oldDir, $aimDir, $overWrite = false) {  
        $aimDir = str_replace('', '/', $aimDir);  
        $aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/';  
        $oldDir = str_replace('', '/', $oldDir);  
        $oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/';  
        if (!is_dir($oldDir)) {  
            return false;  
        }  
        if (!file_exists($aimDir)) {  
            FileUtil :: createDir($aimDir);  
        }  
        $dirHandle = opendir($oldDir);  
        while (false !== ($file = readdir($dirHandle))) {  
            if ($file == '.' || $file == '..') {  
                continue;  
            }  
            if (!is_dir($oldDir . $file)) {  
                FileUtil :: copyFile($oldDir . $file, $aimDir . $file, $overWrite);  
            } else {  
                FileUtil :: copyDir($oldDir . $file, $aimDir . $file, $overWrite);  
            }  
        }  
        return closedir($dirHandle);  
    }  

    /** 
<h5>     * 復制文件</h5>     * 
     * @param string $fileUrl 
     * @param string $aimUrl 
     * @param boolean $overWrite 該參數控制是否覆蓋原文件 
     * @return boolean 
     */  
    function copyFile($fileUrl, $aimUrl, $overWrite = false) {  
        if (!file_exists($fileUrl)) {  
            return false;  
        }  
        if (file_exists($aimUrl) && $overWrite == false) {  
            return false;  
        } elseif (file_exists($aimUrl) && $overWrite == true) {  
            FileUtil :: unlinkFile($aimUrl);  
        }  
        $aimDir = dirname($aimUrl);  
        FileUtil :: createDir($aimDir);  
        copy($fileUrl, $aimUrl);  
        return true;  
    }  

}  

?>  </pre> <h5>調用方式:</h5>

$fu = new FileUtil();$fu->copyFile('a/1/2/3', 'a/1/2/4');

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!