乐码库:一个极速、放心、纯净的下载站! 更新: 资源发布
  • 您的位置:首页 > 技术文档 > PHP编程 > php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
  • 收藏本页
      php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
      发布时间:2016-12-21 08:10:54 关键词: php遍历,生成目录,php遍历,md5文件,php遍历生成目录
      内容简介:本文章向大家介绍php遍历目录,生成目录下每个文件的md5值并写入到结果文件中,需要的朋友可以参考下

    php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中

    实例代码:

    <?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, '', $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 .= '"';
        $content .= $relativePath;
        $content .= '"';
        $content .= ' => array("';
        $content .= $fileSize;
        $content .= '","';
        $content .= $fileMd5;
        $content .= '"),';
        $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 ();
     
    ?>

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

      最新更新
      热门排行榜