zoukankan      html  css  js  c++  java
  • 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

      问题算是解决了,不过这方面有时间还应该研究一下

  • 相关阅读:
    JAVA,模拟HTTP登录(略有修改) ----转载自http://zhoujingxian.iteye.com/blog/439738
    java的mysql初探
    java的IO流初探
    java自己写的简单聊天工具SimpleQQ感悟
    java多线程初探
    java事件监听机制2
    JAVA事件监听机制的实现
    iOS (两行代码实现)浮点数保留两位小数且末尾0不展示
    iOS 13.4 & Xcode 11.4 采坑小记(重写系统get)
    Masonry 使用小记(动态宽度依赖)
  • 原文地址:https://www.cnblogs.com/yyjie/p/7181759.html
Copyright © 2011-2022 走看看