下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
- <?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 ();
- ?>
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。