本文主要研究的是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; i
以上就是本文关于c++实现合并文件以及拆分实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
c++实现合并文件以及拆分实例代码