c++实现合并文件以及拆分实例代码

  

本文主要研究的是c++实现合并文件以及拆分的相关内容,分享了实现代码,具体如下。

  

昨天看到一篇介绍TFS的文章,大意是为了处理海量图片,采用分布式架构,将小图片合并为大的文件

  

兴趣驱使下,写了一个简单的文件合并拆分程序

  

合并的方法很简单,将小文件写入到大文件中,使用二进制的方式。在大文件头,用一个int记录合并进来的小文件的数量,接下来,一块一块的写入小文件。

  

每一块都分为三个部分,第一部分是文件的名称,用20个字符来记录;第二部分用一个整数来记录小文件的长度;第三部分则是小文件的实际内容

  

这样,在拆分时,通过文件头部获得小文件的数量,然后逐个获取名称,文件长度以及内容

  

  

<强>合并:

        空白合并()   {   char[20]名称;   字符串str1=" F:/数据/1. jpg”;   字符串str2=" F:/数据/2. jpg”;   字符串strBlock=" F:/数据/BLOCK.dat”;      文件* f1=fopen (str1.c_str (),“rb +”);   文件* f2=fopen (str2.c_str (),“rb +”);   文件* f3=fopen (strBlock.c_str (),“rb +”);//获取文件的长度   int iLen1=filelength (fileno (f1));   int iLen2=filelength (fileno (f2));      char *来=new char [iLen1];   memset(来,0 x0, iLen1);   char * buf2=new char [iLen2];   memset (0 x0, buf2 iLen2);//获取文件内容   从文件中读(来iLen1 1、f1);   从文件中读(buf2 iLen2 1, f2);   文件关闭(f1);   文件关闭(f2);//在文件头记录合并文件的个数   int iCount=2;   fseek (f3 0 SEEK_SET);   写入文件(及iCount sizeof (int), 1, f3);//写入第一个文件   memset(名称、0 x0 20);   strcpy(名称、str1.c_str ());   写入文件(1名,20日,f3);   写入文件(及iLen1 sizeof (int), 1, f3);   写入文件(来iLen1 1, f3);//写入第二个文件   memset(名称、0 x0 20);   strcpy(名称、str2.c_str ());   写入文件(1名,20日,f3);   写入文件(及iLen2 sizeof (int), 1, f3);   写入文件(buf2 iLen2 1, f3);      文件关闭(f3);//删除申请的内存   删除[]来;   删除[]buf2;   }      

<强>拆分:

        无效的分裂()   {   char[20]名称;   字符串strBlock=" F:/数据/BLOCK.dat”;   文件* f3=fopen (strBlock.c_str (),“rb +”);//获取文件数量   int iCount=0;   fseek (f3 0 SEEK_SET);   从文件中读(及iCount sizeof (int), 1, f3);      for (int i=0; ic++实现合并文件以及拆分实例代码