Textdateien splitten (10kb Stücke)
-
Hallo,
ich hab eine Textdatei (Test.txt) mit z.B 700kb
Ich lese die Datei nun ein und möchte sie in konfigurierbaren Stückchen inkl Timestamp rausschrieben
aus der Test.txt mit 700kb werden dann
Test_216544545.txt mit 10kb
Test_435345345.txt mit 10kb
Test_568756757.txt mit 10kb
Test_234234233.txt mit 10kb
Test_902734967.txt mit 10kb
.
.
.
.
usw. das Beispiel hier muesste dann ca. 70 Dateien mit jeweils 10kb ergebenMeine Frage ist nun wie ich das effizient mit C++ umsetze?
-
Eingabedatei öffnen, Ausgabedatei1 öffnen, 70kb einlesen und schreiben (get & put), nächste Ausgabedatei öffnen, wieder 70kb lesen...
Effizient würde man das nun mit einer Schleife machen?!
-
- Datei zeilenweise einlesen
- Dabei die Anzahl der Buchstaben mizählen
- Immer wenn 10 KB erreicht sind in eine neue Datei schreiben
-
Hallo,
leg ein char-Array mit der benötigten Größe (in dem Fall 10 kb) an. Du liest dann blockweise aus der Eingabedatei immer 10 kb raus und packst sie in das char-Array. Das Array schreibst du dann in eine Textdatei und weiter geht's.
Wenn dir das dann nicht schnell genug ist, komm wieder
MfG
GPC
-
GPC schrieb:
Hallo,
leg ein char-Array mit der benötigten Größe (in dem Fall 10 kb) an. Du liest dann blockweise aus der Eingabedatei immer 10 kb raus und packst sie in das char-Array. Das Array schreibst du dann in eine Textdatei und weiter geht's.
Wenn dir das dann nicht schnell genug ist, komm wieder
MfG
GPC
Hehe thx, was gibts denn noch schnelleres. Wenn du schnelleres kennst her damit

-
GPC schrieb:
Hallo,
leg ein char-Array mit der benötigten Größe (in dem Fall 10 kb) an. Du liest dann blockweise aus der Eingabedatei immer 10 kb raus und packst sie in das char-Array. Das Array schreibst du dann in eine Textdatei und weiter geht's.
Wenn dir das dann nicht schnell genug ist, komm wieder
MfG
GPC
Sorry kannst du oder jemand anderst das mir nochmals erklären? ich weiss nicht wirklich wie vorgehen. hab auch im FAQ nichts gefunden. Klar ich wiess wie man das char array anlegt aber nicht wie man das in 10KB Stücken einliest und in einen string schreibt

Bitte ein wenig erklären und zeigen. Dafür wäre ich sehr dankbar!
-
char buffer[10 * 1024]; inputFileStream.read(buffer, sizeof(buffer)); std::string str(buffer, inputFileStream.gcount());
-
Mein Gott klar

Das passt auch so hab ein File mit 10kb, nun hätte ich gerne den Rest der 700kb datei auch noch in 10kb stücken :(.
Will sagen: Wie lese ich wieter aus?
-
Lesen bildet:
Trundle0x7e schrieb:
Eingabedatei öffnen, Ausgabedatei1 öffnen, 70kb einlesen und schreiben (get & put), nächste Ausgabedatei öffnen, wieder 70kb lesen...
Effizient würde man das nun mit einer Schleife machen?!
Oder, für die faulen ein kleiner Code-Schnipsel:
ifstream input(...); char data[10240]; while(input) { //bestimme Ausgabenamen ofstream output(...); input.read(data,sizeof(data)); output.write(data,input.gcount()); }
-
Hi,
hatte gedacht, das Problem hat sich erledigt^^
#include <iostream> #include <fstream> #include <string> #include <cstring> int main() { const int SIZE = 10*1024; //10kb std::ifstream ifs("file.txt"); if (!ifs) return 1; std::ofstream ofs; char buffer[SIZE]; time_t t; while (ifs.good()) { ifs.read(buffer, SIZE); time(&t); ofs.open( ctime(&t) ); ifs (ofs) { ofs.write(buffer, ifs.gcount()); //hier gcount, damit wir beim Rest (der vermutlich < 10kb ist) nicht noch mal den Müll vom letzten mal mit rausschreiben ofs.close(); } else { cerr<<"Konnte keine Ausgabedatei erzeugen!\n"; } } return 0; };So, ist ungetestet und hingeschludert. Keine Garantie

EDIT: too slow...
MfG
GPC