Php處理大文件-分割和合並


分割文件

/*    * 分割文件    * 默認大小 2M=10485760/5    */   function file_split($file,$block_size=10485760/5)   {    $block_info=array();    $size=filesize($file);    $i=0;    while($size>0){    $block_info[]=array(    'size'=>($size>=$block_size?$block_size:$size),    'file'=>str_replace('.txt', '',$file).'.'.($i++).'.txt'    );    $size-=$block_size;    }       $fp = fopen($file,"rb");    foreach ($block_info as $bi) {    $handle = fopen($bi['file'],"wb");    fwrite($handle,fread($fp,$bi['size']));    fclose($handle);    unset($handle);    }    fclose ($fp);    unset($fp);   }

合並文件  

  /*    * 合並文件    * 如果合並后的文件為 CPCUxcp111.flv.0.esplit    * 則 file=CPCUxcp111.flv,不包含.x.esplit后綴    * save_file為另存為的文件名    */   function file_combine($file,$save_file=''){    $filename=basename($file);    $filepath=dirname($file).'/';    $block_info=array();    for($i=0;;$i++){    if(file_exists($file.'.'.$i.'.esplit') && filesize($file.'.'.$i.'.esplit')>0){    $block_info[]=$file.'.'.$i.'.esplit';    }else{    break;    }    }    if($save_file){    $fp = fopen($save_file,"wb");    }else{    $fp = fopen($file,"wb");    }    foreach ($block_info as $block_file) {    $handle = fopen($block_file,"rb");    fwrite($fp,fread($handle,filesize($block_file)));    fclose($handle);    unset($handle);    }    fclose ($fp);    unset($fp);   }

測試代碼:

file_split('d:/demo.txt');
  • 1

  問題算是解決了,不過這方面有時間還應該研究一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM