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

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

实例代码

rush: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 ();

?>

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?
C++程序:将一个数组的所有元素复制到另一个数组中
Golang:构建智能系统的基石
为什么AI开发者应该关注Golang?
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句
PHP8底层开发原理解析及新特性应用实例
利用PHP8底层开发原理解析新特性:如何构建出色的Web应用