加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

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

发布时间:2020-05-25 06:36:41 所属栏目:PHP 来源:互联网
导读:php遍历目录,生成目录下每个文件的md5值并写入到结果文件中

下面是脚本之家 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:temp2dest.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 = "tt";
		$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)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读