2012-04-11 4 views
-1

Ich entwickelte einen Algorithmus für eine Datei Spliter & Merger, wo ich auf ein Problem stieß auf Wie füge ich die Dateien (ich teile) mit ihrer ursprünglichen Erweiterung (Dateiformat). Ich habe eine Idee, das Dateiformat am Anfang des allerersten Teils der geteilten Datei zu schreiben (i-e, wenn ich eine Datei in drei Dateien aufgeteilt habe, dann speichere das Dateiformat in der 1.bij-Datei). Wird diese Idee funktionieren? Weißt du eine bessere Idee, also bitte teilen Sie mit mir.Datei Merger C++

Dank

+0

Behalten Sie die Erweiterung im Namen der geteilten Datei? ('split.iso.1',' split.iso.2' ...) – Mat

+0

Ich möchte nicht die ursprüngliche Dateierweiterung in geteilten Dateien behalten! –

+1

Dann speichern Sie die Informationen in den Splits oder in einer separaten "Metadaten" -Datei ... Ich verstehe nicht wirklich, was Sie fragen. – Mat

Antwort

1

Sie können für jede geteilte Datei mit dem vollständigen Dateinamen einen Header umfassen, sondern auch - zum Beispiel - mit Originalgröße, Prüfsumme und so weiter.


bearbeiten: Wie Text, um binäre Stream schreiben

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

Können Sie bitte erläutern, wie ich Header zu einer Datei hinzufügen kann. –

+0

Ein Header ist nur ein paar Bytes am Anfang der Datei mit einigen nützlichen Daten hinzugefügt. Schreiben Sie es in die geteilten Dateien vor den eigentlichen Daten. Der Algorithmus wird variieren, abhängig davon, wie Ihr Algorithmus funktioniert. Ich kann nichts vorschlagen, wenn Sie nicht einige Ihrer Quellcodes posten. – Spook

+0

Ja das ist meine Idee, wie ich oben erwähnt habe. Aber die Frage ist, wie würde ich Text im Binärmodus schreiben. –

1

Warum lassen Sie nicht der Benutzer den Dateinamen mit einem Argument Befehlszeile wählen? Sie könnten eine -o Befehlszeilenoption verwenden. Bonuspunkt für die Weiterleitung des Benutzers an die Standardausgabe unter Verwendung des Dateinamens -. Er könnte dann mit einem anderen Werkzeug pumpen. Zum Beispiel: merger -o - part*.bin | tar zxvf -