读写大“二进制”文件,不必申请很大内存(fopen,fread,fwrite,fclose)

来源:互联网 发布:算法导论视频下载 编辑:程序博客网 时间:2024/06/05 20:22
<?php/** * 读写大二进制文件,不必申请很大内存 * 只有读取到内容才创建文件 * 保证目录可写 * * @param string $srcPath 源文件路径 * @param string $dstPath 目标文件路径 * @return bool */function fetch_big_file($srcPath, $dstPath){  set_time_limit(0); // 设置脚本执行时间无限长  if (!$fpSrc = fopen($srcPath, "rb"))  {    return false;  }  $isWriteFileOpen = false; // 写文件 是否已打开?  do  {    $data = fread($fpSrc, 8192); // 每次读取 8*1024个字节    if (!$data)    {      break;    }    else if (!$isWriteFileOpen)    {      // 第一次读取文件,并且有内容,才创建文件      $fpDst = fopen($dstPath, "wb");      $isWriteFileOpen = true;      fwrite($fpDst, $data);    }    else    {      // 写入      fwrite($fpDst, $data);    }  }  while (true);  fclose($fpSrc);  fclose($fpDst);  return true;}$srcPath = 'd:/PHP/data/eclipse-jee-kepler-R-win32-x86_64.pdf';$dstPath = 'Z:/reslibCovertingfiles/eclipse-jee-kepler-R-win32-x86_64.pdf';fetch_big_file($srcPath, $dstPath);echo 'success';

参考:

http://php.net/manual/zh/function.fread.php

  • 本文来自:Linux教程网
0 0
原创粉丝点击