c++実装マージファイルおよび分割インスタンスコード
2597 ワード
本稿では,c++実装マージファイルおよび分割に関する内容を主に検討し,実装コードを共有し,具体的には以下の通りである.
昨日、TFSを紹介する文章を見ました.大意は大量の画像を処理するために、分布式のアーキテクチャを採用して、小さな画像を大きなファイルに統合することです.
興味に駆られて、簡単なファイルを書いて分割プログラムを統合しました.
マージの方法は簡単で、小さなファイルを大きなファイルに書き込み、バイナリ方式を使用します.大きなファイルヘッダでは、統合された小さなファイルの数をintで記録し、次に、小さなファイルを1枚ずつ書き込む.
各ブロックは3つの部分に分かれており、第1の部分はファイルの名前で、20 charで記録されています.第2部はintで小さなファイルの長さを記録する.第3部は小さなファイルの実際の内容です
これにより、分割時にファイルヘッダから小ファイルの数を取得し、名前、ファイル長、コンテンツを1つずつ取得する
ソースコードを添付
結合:
分割:
まとめ
以上、c++実装マージファイルおよび分割インスタンスコードのすべての内容について説明したが、皆さんの役に立つことを願っている.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!
昨日、TFSを紹介する文章を見ました.大意は大量の画像を処理するために、分布式のアーキテクチャを採用して、小さな画像を大きなファイルに統合することです.
興味に駆られて、簡単なファイルを書いて分割プログラムを統合しました.
マージの方法は簡単で、小さなファイルを大きなファイルに書き込み、バイナリ方式を使用します.大きなファイルヘッダでは、統合された小さなファイルの数をintで記録し、次に、小さなファイルを1枚ずつ書き込む.
各ブロックは3つの部分に分かれており、第1の部分はファイルの名前で、20 charで記録されています.第2部はintで小さなファイルの長さを記録する.第3部は小さなファイルの実際の内容です
これにより、分割時にファイルヘッダから小ファイルの数を取得し、名前、ファイル長、コンテンツを1つずつ取得する
ソースコードを添付
結合:
void Merge()
{
char name[20];
string str1 = "F:/ /1.jpg";
string str2 = "F:/ /2.jpg";
string strBlock = "F:/ /BLOCK.dat";
FILE* f1 = fopen(str1.c_str(),"rb+");
FILE* f2 = fopen(str2.c_str(),"rb+");
FILE* f3 = fopen(strBlock.c_str(),"rb+");
//
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);
//
fread(buf1,iLen1,1,f1);
fread(buf2,iLen2,1,f2);
fclose(f1);
fclose(f2);
//
int iCount = 2;
fseek(f3,0,SEEK_SET);
fwrite(&iCount,sizeof(int),1,f3);
//
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);
//
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);
//
delete[] buf1;
delete[] buf2;
}
分割:
void Split()
{
char name[20];
string strBlock = "F:/ /BLOCK.dat";
FILE* f3 = fopen(strBlock.c_str(),"rb+");
//
int iCount = 0;
fseek(f3,0,SEEK_SET);
fread(&iCount,sizeof(int),1,f3);
for(int i=0;i
まとめ
以上、c++実装マージファイルおよび分割インスタンスコードのすべての内容について説明したが、皆さんの役に立つことを願っている.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!