本文主要研究的是c++實(shí)現(xiàn)合并文件以及拆分的相關(guān)內(nèi)容,分享了實(shí)現(xiàn)代碼,具體如下。

昨天看到一篇介紹TFS的文章,大意是為了處理海量圖片,采用分布式架構(gòu),將小圖片合并為大的文件
興趣驅(qū)使下,寫了一個(gè)簡(jiǎn)單的文件合并拆分程序
合并的方法很簡(jiǎn)單,將小文件寫入到大文件中,使用二進(jìn)制的方式。在大文件頭,用一個(gè)int記錄合并進(jìn)來的小文件的數(shù)量,接下來,一塊一塊的寫入小文件。
每一塊都分為三個(gè)部分,第一部分是文件的名稱,用20個(gè)char 來記錄;第二部分用一個(gè)int來記錄小文件的長(zhǎng)度;第三部分則是小文件的實(shí)際內(nèi)容
這樣,在拆分時(shí),通過文件頭部獲得小文件的數(shù)量,然后逐個(gè)獲取名稱,文件長(zhǎng)度以及內(nèi)容
附上源代碼
合并:
void Merge()
{
char name[20];
string str1 = "F:/數(shù)據(jù)/1.jpg";
string str2 = "F:/數(shù)據(jù)/2.jpg";
string strBlock = "F:/數(shù)據(jù)/BLOCK.dat";
FILE* f1 = fopen(str1.c_str(),"rb+");
FILE* f2 = fopen(str2.c_str(),"rb+");
FILE* f3 = fopen(strBlock.c_str(),"rb+");
// 獲取文件的長(zhǎng)度
int iLen1 =filelength(fileno(f1));
int iLen2 = filelength(fileno(f2));
char *buf1 = new char[iLen1];
memset(buf1,0x0,iLen1);
char *buf2 = new char[iLen2];
memset(buf2,0x0,iLen2);
// 獲取文件內(nèi)容
fread(buf1,iLen1,1,f1);
fread(buf2,iLen2,1,f2);
fclose(f1);
fclose(f2);
// 在文件頭記錄合并文件的個(gè)數(shù)
int iCount = 2;
fseek(f3,0,SEEK_SET);
fwrite(&iCount,sizeof(int),1,f3);
// 寫入第一個(gè)文件
memset(name,0x0,20);
strcpy(name,str1.c_str());
fwrite(name,20,1,f3);
fwrite(&iLen1,sizeof(int),1,f3);
fwrite(buf1,iLen1,1,f3);
// 寫入第二個(gè)文件
memset(name,0x0,20);
strcpy(name,str2.c_str());
fwrite(name,20,1,f3);
fwrite(&iLen2,sizeof(int),1,f3);
fwrite(buf2,iLen2,1,f3);
fclose(f3);
//刪除申請(qǐng)的內(nèi)存
delete[] buf1;
delete[] buf2;
}另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享文章:c++實(shí)現(xiàn)合并文件以及拆分實(shí)例代碼-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://chinadenli.net/article38/dspdsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、做網(wǎng)站、App設(shè)計(jì)、網(wǎng)站改版、定制開發(fā)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容