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

2018-09-07 19:03

阅读:369

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

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


评论


亲,登录后才可以留言!