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

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

?>

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php遍历
, 生成目录
, md5文件
php遍历生成目录
目录遍历漏洞实例、ireport 遍历list实例、volicity 遍历实例、c 遍历实例、md5签名写入空白包中,以便于您获取更多的相关知识。

时间: 2024-08-14 18:57:09

php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中_php实例的相关文章

没有文件 目录 make-RedHat6.5下make一个项目的时候总是提示xxxx.h文件:没有那个文件或目录

问题描述 RedHat6.5下make一个项目的时候总是提示xxxx.h文件:没有那个文件或目录 RedHat6.5下make一个项目的时候总是提示xxxx.h文件:没有那个文件或目录.总工程是目录A,A下面有很多子目录比如B1,B2.B1下有个子目录C,就是在C下qmake -project,qmake,make.前两个什么都没有提示,make的时候就提示错误了.那些提示找不到的头文件在目录A和子目录B1的include里面都可以找到.将.h复制进去后,又有一堆.h找不到,盼解决! 解决方案

Linux下计算文件的MD5值

脚本功能 脚本使用Perl编写,计算文件的MD5值 脚本用途 服务器在安装完操作系统后,计算PATH变量里面所有的二进制文件的MD5.计算单个文件MD5值.计算某个目录(包括子目录)下所有的文件的MD5值记录到文件,等日后再生成一份,然后2份文件进行对比,即可知道这些文件是否又被改动过. 脚本用法(5种用法) 脚本名 -p                   [ > 输出的文件名]  ← 该功能是计算PATH变量里面所有文件的MD5值  脚本名 文件1 文件2 文件3 ...  [ > 输出的

我的Java开发学习之旅------&amp;gt;工具类:Java获取字符串和文件进行MD5值

ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一下才发现所谓的"秒传"是常见的"忽略式"上传方式,就是您上传了一个文件名为111.exe,MD5为一个数,有一个网友以前也上传一个叫222.exe,MD5和您上传的文件MD5码一模一样,所以这个文件上传到服务器上的时间就很短了,这是因为别人上传过这个文件,您上传这个文件

vb.net 怎么获取一个文件夹所有文件的MD5值?

问题描述 大家好!谁能帮我写一段代码?vb.net怎么获取一个文件夹所有文件的MD5值?大家能不能提供源代码? 解决方案 解决方案二: 我给你分解一下1.获取每个文件的md5值2.遍历文件夹,如果是文件就调用上面函数计算3.输出计算值解决方案三: 将文件夹打包,然后对打包文件进行MD5计算或者遍历文件夹,然后对每一个MD5计算解决方案四: 给你写了一个完整的例子ImportsSystem.IOImportsSystem.Security.CryptographyImportsSystem.Lin

计算文件的MD5值上传到服务器 下载验证文件是否被篡改

using System; using System.Windows.Forms; using System.Security.Cryptography; using System.IO; namespace 计算文件的MD5 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }         priv

php获取文件夹路径内的图片以及分页显示示例_php实例

复制代码 代码如下: <div style="width: 90%; margin: 10px auto; border: 1px solid #ccc; text-align: center">    <?php    $page=isset($_GET['page'])?$_GET['page']:0;//从零开始    $imgnums = 10;    //每页显示的图片数    $path="upload";   //图片保存的目录   

thinkphp表单上传文件并将文件路径保存到数据库中_php实例

上传单个文件,此文以上传图片为例,上传效果如图所示 创建数据库upload_img,用于保存上传路径 CREATE TABLE `seminar_upload_img` ( `id` int(11) NOT NULL AUTO_INCREMENT, `img_name` varchar(255) DEFAULT NULL COMMENT '图片名称', `img_url` varchar(255) DEFAULT NULL COMMENT '图片路径', `create_time` text,

PHP下通过QRCode类库创建中间带网站LOGO的二维码_php实例

我们要生成二维码都需要借助一些类库来实现了,下面我介绍利用PHP QR Code生成二维码吧,生成方法很简单,下面我来介绍一下. 利用php类库PHP QR Code来实现,不需要装额外的php扩展,首先下载类库包,有时候地址打不开,地址:http://phpqrcode.sourceforge.net/ 下载: 国内下载:http://www.jb51.net/codes/189897.html 国外下载:http://sourceforge.net/projects/phpqrcode/ 例

py文件转exe时包含paramiko模块出错解决方法_php实例

 问题描述: python代码中包含paramiko模块的远程登录ssh,在用pyInstaller转为exe时报错, 报错提示为"No handlers could be found for logger "paramiko.transport" 出错位置: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 解决方案: 添加一行代码,记录传输日志. 代码如