加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-12 21:55:28 所属栏目:PHP教程 来源:网络整理
导读:php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中 实例代码: /** @author Administrator */ class TestGenerate { public static $appFolder = ""; public static $ignoreFilePaths = array ( "xxxx/xxx.php" ); public static function start()

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

实例代码:

/**

  • @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:temp2dest.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 = "tt";
$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 ();

?>

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读