2012-04-11 7 views
-1

ファイルスプリッタ&合併のアルゴリズムを開発していましたが、元の拡張子(ファイル形式)とファイルをどのようにマージするのかという問題が発生しました。私は分割ファイルの最初のチャンク(私は3つのファイルにファイルを分割し、次に1.bijファイルにファイルフォーマットを格納する場合はi - e)の先頭にファイルフォーマットを書き込む考えがあります。このアイデアは機能しますか?あなたはもっと良いアイデアを知っていますか?私と共有してください。File Merger C++

おかげ

+0

分割ファイル名に拡張子を付けてください。 ( 'split.iso.1'、' split.iso.2' ...) – Mat

+0

私は元のファイル拡張子を分割したファイルに保存したくありません! –

+1

その後、分割や別の "メタデータ"ファイルに情報を保存します...私はあなたが求めているものを実際には得られません。 – Mat

答えて

1

あなたは、その完全なファイル名と、各分割さファイルのヘッダが、また含んでいてもよい - 例えば - ように元のサイズ、チェックサムとを有するが。


編集:バイナリストリームにテキストを書き込む方法

fstream f(/* initialize*/); 

std::string s = "asdf"; 

// Store the size of text 
auto size = s.size(); 
f.write(&size, sizeof(size)); 

// Store the string itself 
f.write(s.c_str(), s.size()); 
+0

ファイルにヘッダーを追加するにはどうすればいいですか? –

+0

ヘッダーは、ファイルの先頭にいくつかの有用なデータを加えた単なる束です。実際のデータの前に分割されたファイルに書き込みます。アルゴリズムは、分割アルゴリズムの仕組みによって異なります。ソースコードの一部を投稿しない限り、私は何も示唆することができません。 – Spook

+0

私の考えは、上記のとおりです。しかし、問題は、バイナリモードでテキストを書く方法です。 –

1

ユーザーがコマンドライン引数でファイル名を選択できないのはなぜ? -oコマンドラインオプションを使用できます。 -ファイル名を使用して標準出力にリダイレクトするためのボーナスポイント。彼はその後、別の道具でパイプすることができました。たとえば、次のようになります。merger -o - part*.bin | tar zxvf -