首页 > php教程 > PHP源码 > 正文

php遍历目录

大家讲道理
发布: 2016-11-08 13:51:11
原创
1303 人浏览过

<?php
 
/** 
 * @author Administrator
 * 
 */
class TestGenerate {
    public static $appFolder = "";
    public static $ignoreFilePaths = array (
        "xxxx/xxx.php"
    );
    public static function start() {
        $AppPath = "E:\\myApp";
        TestGenerate::$appFolder = $AppPath;
        $destManifestPath = "E:\\temp2\\dest.md5.txt";
         
        // dest file handle
        $manifestHandle = fopen ( $destManifestPath, "w+" );
         
        // write header
        TestGenerate::writeMaifestHeader ( $manifestHandle );
         
        // write md5
        TestGenerate::traverse ( $AppPath, $manifestHandle );
         
        // write footer
        TestGenerate::writeMaifestFooter ( $manifestHandle );
         
        // close file
        fclose ( $manifestHandle );
    }
     
    /**
     * 遍历应用根目录下的文件,并生成对应的文件长度及md5信息
     *
     * @param unknown $AppPath
     *          应用根目录,如:xxx/xxx/analytics
     * @param string $destManifestPath
     *          生成的manifest文件存放位置的文件句柄
     */
    public static function traverse($AppPath, $manifestHandle) {
        if (! file_exists ( $AppPath )) {
            printf ( $AppPath . " does not exist!" );
            return;
        }
        if (! is_dir ( $AppPath )) {
            printf ( $AppPath . " is not a directory!" );
            return;
        }
        if (! ($dh = opendir ( $AppPath ))) {
            printf ( "Failure while read diectory!" );
            return;
        }
         
        // read files
        while ( ($file = readdir ( $dh )) != false ) {
            $subDir = $AppPath . DIRECTORY_SEPARATOR . $file;
             
            if ($file == "." || $file == "..") {
                continue;
            } else if (is_dir ( $subDir )) {
                // rescure
                TestGenerate::traverse ( $subDir, $manifestHandle );
            } else {
                // Sub is a file.
                TestGenerate::writeOneFieToManifest ( $subDir, $manifestHandle );
            }
        }
         
        // close dir
        closedir ( $dh );
    }
     
    /**
     * 写一个文件的md5信息到文件中
     *
     * @param unknown $filePath         
     * @param unknown $fileHandle           
     */
    public static function writeOneFieToManifest($filePath, $fileHandle) {
        if (! file_exists ( $filePath )) {
            continue;
        }
         
        $relativePath = str_replace ( TestGenerate::$appFolder . DIRECTORY_SEPARATOR, &#39;&#39;, $filePath );
        $relativePath = str_replace ( "\\", "/", $relativePath );
         
        // ignore tmp directory
        if (strpos ( $relativePath, "tmp/" ) === 0) {
            return;
        }
         
        $fileSize = filesize ( $filePath );
        $fileMd5 = @md5_file ( $filePath );
         
        $content = "\t\t";
        $content .= &#39;"&#39;;
        $content .= $relativePath;
        $content .= &#39;"&#39;;
        $content .= &#39; => array("&#39;;
        $content .= $fileSize;
        $content .= &#39;","&#39;;
        $content .= $fileMd5;
        $content .= &#39;"),&#39;;
        $content .= "\n";
         
        if (! fwrite ( $fileHandle, $content )) {
            print ($filePath . " can not be written!") ;
        }
    }
     
    /**
     * 在manifes文件中写入头信息
     *
     * @param unknown $fileHandle           
     */
    public static function writeMaifestHeader($fileHandle) {
        $header = "<?php";
        $header .= "\n";
        $header .= "// This file is automatically generated";
        $header .= "\n";
        $header .= "namespace test;";
        $header .= "\n";
        $header .= "class MyFile {";
        $header .= "\n";
        $header .= "\tstatic \$allFiles=array(";
        $header .= "\n";
         
        if (! fwrite ( $fileHandle, $header )) {
            printf ( "Failure while write file header." );
        }
    }
     
    /**
     * 在manifes文件中写入尾部信息
     *
     * @param unknown $fileHandle           
     */
    public static function writeMaifestFooter($fileHandle) {
        $footer = "\t);";
        $footer .= "\n";
        $footer .= "}";
        $footer .= "\n";
         
        if (! fwrite ( $fileHandle, $footer )) {
            printf ( "Failure while write file header." );
        }
    }
}
 
// Start application
TestGenerate::start ();
 
?>
登录后复制

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板