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

巴扎黑
发布: 2016-12-22 14:06:16
原创
1708人浏览过

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 = "		";
    $content .= '"';
    $content .= $relativePath;
    $content .= '"';
    $content .= ' => array("';
    $content .= $fileSize;
    $content .= '","';
    $content .= $fileMd5;
    $content .= '"),';
    $content .= "
";
      
    if (! fwrite ( $fileHandle, $content )) {
      print ($filePath . " can not be written!") ;
    }
  }
    
  /**
   * 在manifes文件中写入头信息
   *
   * @param unknown $fileHandle     
   */
  public static function writeMaifestHeader($fileHandle) {
    $header = "<?php";
    $header .= "
";
    $header .= "// This file is automatically generated";
    $header .= "
";
    $header .= "namespace test;";
    $header .= "
";
    $header .= "class MyFile {";
    $header .= "
";
    $header .= "	static $allFiles=array(";
    $header .= "
";
      
    if (! fwrite ( $fileHandle, $header )) {
      printf ( "Failure while write file header." );
    }
  }
    
  /**
   * 在manifes文件中写入尾部信息
   *
   * @param unknown $fileHandle     
   */
  public static function writeMaifestFooter($fileHandle) {
    $footer = "	);";
    $footer .= "
";
    $footer .= "}";
    $footer .= "
";
      
    if (! fwrite ( $fileHandle, $footer )) {
      printf ( "Failure while write file header." );
    }
  }
}
  
// Start application
TestGenerate::start ();
  
?>
登录后复制

   

笔目鱼英文论文写作器
笔目鱼英文论文写作器

写高质量英文论文,就用笔目鱼

笔目鱼英文论文写作器 87
查看详情 笔目鱼英文论文写作器

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号