温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php怎么遍历目录

发布时间:2021-08-20 18:56:48 阅读:253 作者:chen 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容主要讲解“php怎么遍历目录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么遍历目录”吧!

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 ();
 
?>

到此,相信大家对“php怎么遍历目录”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI

开发者交流群×