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 headerTestGenerate::writeMaifestHeader ( $manifestHandle ); // write md5TestGenerate::traverse ( $AppPath, $manifestHandle ); // write footerTestGenerate::writeMaifestFooter ( $manifestHandle ); // close filefclose ( $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 fileswhile ( ($file = readdir ( $dh )) != false ) {$subDir = $AppPath . DIRECTORY_SEPARATOR . $file; if ($file == "." || $file == "..") {continue;} else if (is_dir ( $subDir )) {// rescureTestGenerate::traverse ( $subDir, $manifestHandle );} else {// Sub is a file.TestGenerate::writeOneFieToManifest ( $subDir, $manifestHandle );}} // close dirclosedir ( $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 directoryif (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 applicationTestGenerate::start (); ?>
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!