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 .= "http:// 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 ();
?></pre>