分割文件

/*
   * 分割文件
   * 默认大小 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

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

Php处理大文件-分割和合并的更多相关文章

  1. python学习——大文件分割与合并

    在平常的生活中,我们会遇到下面这样的情况: 你下载了一个比较大型的游戏(假设有10G),现在想跟你的同学一起玩,你需要把这个游戏拷贝给他. 然后现在有一个问题是文件太大(我们不考虑你有移动硬盘什么的情 ...

  2. python实现大文件分割与合并

    小U盘传大电影时可以免去用winrar分割文件时的压缩和解压缩过程. file.py import sys from os.path import exists fileCount = 0 def s ...

  3. Linux中split大文件分割和cat合并文件

    当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输.这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件. 1.分割 ...

  4. java:快速文件分割及合并

    文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...

  5. (转)java:快速文件分割及合并

    文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...

  6. JAVA IO分析三:IO总结&文件分割与合并实例

    时间飞逝,马上就要到2018年了,今天我们将要学习的是IO流学习的最后一节,即总结回顾前面所学,并学习一个案例用于前面所学的实际操作,下面我们就开始本节的学习: 一.原理与概念 一.概念流:流动 .流 ...

  7. c语言文件分割与合并

    一.综述 c语言操作文件通过文件指针FILE*,每个要操作的文件必须打开然后才能读写. 注意事项: @1分割与合并文件最好使用二进制模式即"rb"或"wb",这 ...

  8. PHP + JS 实现大文件分割上传

    服务器上传文件会有一定的限制.避免内存消耗过大影响性能,在 php.ini 配置文件中,有几个影响参数: upload_max_filesize = 2M //PHP最大能接受的文件大小 post_m ...

  9. c#大文件分割过程

    需求: 在项目开发中,我们会遇到单个文件大小超过1TB的文件,这样的文件只能进行单文件读取,往往会造成读取完成耗时过长,导致客户在使用体验过程中不满意. 为了解决提升大文件的解析速度,我想到了先分割大 ...

随机推荐

  1. ThinkPHP3.1URL分发BUG修正

    请先留意以下PHP脚本 PHP脚本A(http://127.0.0.1:8110/test.php): $url = 'http://127.0.0.1:8110/demo.php'; //curl请 ...

  2. linux 中vim学习与总结

    平常使用vim总是忘记快捷键,在这里做一个总结一下比较常用的快捷把,省的每次都要去查. h : 向左移动一个字符(←) j : 向上移动一个字符(↑) k : (↓) l : (→) ctrl+f : ...

  3. sublime text 配置golang开发环境

    一.准备工作: 1.下载Go语言包: https://code.google.com/p/go/downloads/list 2.下载Git: https://code.google.com/p/ms ...

  4. Java NIO —— Buffer(缓冲区)

    Buffer是一个抽象类,位于java.nio包中,主要用作缓冲区.注意:Buffer是非线程安全类. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffer ...

  5. 大数据学习系列(5)-- 局域网yum仓库搭建

    https://www.cnblogs.com/nulige/p/6081192.html

  6. Devexpress GridView 常用操作总结

    一:Clone返回新的 DataTable Clone返回新的 DataTable,与当前的 DataTable 具有相同的架构:Copy:返回新的 DataTable,它具有与该 DataTable ...

  7. 九度OJ 1209:最小邮票数 (遍历)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2252 解决:741 题目描述: 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值.     如,有1分,3分,3分,3分,4分五 ...

  8. [php]Maximum function nesting level of '100' reached错误

    今天在做后台一个模块的时候报出了这个错误. Maximum function nesting level of '100' reached 仔细分析之后发现是在类的初始化过程中(__construct ...

  9. 找出旋转有序数列的中间值python实现

    题目给出一个有序数列随机旋转之后的数列,如原有序数列为:[0,1,2,4,5,6,7] ,旋转之后为[4,5,6,7,0,1,2].假定数列中无重复元素,且数列长度为奇数.求出旋转数列的中间值.如数列 ...

  10. linux中什么是文件结构体?

    struct file结构体定义在include/linux/fs.h中定义.文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file.它由内核在打开文件时 ...